diff options
author | Miklos Vajna <vmiklos@suse.cz> | 2012-12-30 22:55:20 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@suse.cz> | 2012-12-31 15:15:59 +0100 |
commit | 810fc6553c73634aa4c64be9c2ae83112493d81c (patch) | |
tree | cabc133a810db43520775e0a72272e415300b48a /writerfilter | |
parent | 3ea8026aefc358483292b459aaaead830e1f667d (diff) |
fdo#54612 don't crash on RTF_DPPTX before RTF_DPPOLYCOUNT
Change-Id: I35bf580df157dee429d9dca193945ea95616d678
(cherry picked from commit 08b4efb4e1cd01311719caffea4117fd8770f20f)
Diffstat (limited to 'writerfilter')
-rw-r--r-- | writerfilter/source/rtftok/rtfdocumentimpl.cxx | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx index 378e9f57067c..9ac2282cd36a 100644 --- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx +++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx @@ -3314,19 +3314,24 @@ int RTFDocumentImpl::dispatchValue(RTFKeyword nKeyword, int nParam) case RTF_DPPTX: { RTFDrawingObject& rDrawingObject = m_aStates.top().aDrawingObject; + if (!rDrawingObject.aPolyLinePoints.hasElements()) + dispatchValue(RTF_DPPOLYCOUNT, 2); rDrawingObject.aPolyLinePoints[rDrawingObject.aPolyLinePoints.getLength() - rDrawingObject.nPolyLineCount].X = TWIP_TO_MM100(nParam); } break; case RTF_DPPTY: { RTFDrawingObject& rDrawingObject = m_aStates.top().aDrawingObject; - rDrawingObject.aPolyLinePoints[rDrawingObject.aPolyLinePoints.getLength() - rDrawingObject.nPolyLineCount].Y = TWIP_TO_MM100(nParam); - rDrawingObject.nPolyLineCount--; - if (rDrawingObject.nPolyLineCount == 0) + if (rDrawingObject.aPolyLinePoints.hasElements()) { - uno::Sequence< uno::Sequence<awt::Point> >aPointSequenceSequence(1); - aPointSequenceSequence[0] = rDrawingObject.aPolyLinePoints; - rDrawingObject.xPropertySet->setPropertyValue("PolyPolygon", uno::Any(aPointSequenceSequence)); + rDrawingObject.aPolyLinePoints[rDrawingObject.aPolyLinePoints.getLength() - rDrawingObject.nPolyLineCount].Y = TWIP_TO_MM100(nParam); + rDrawingObject.nPolyLineCount--; + if (rDrawingObject.nPolyLineCount == 0) + { + uno::Sequence< uno::Sequence<awt::Point> >aPointSequenceSequence(1); + aPointSequenceSequence[0] = rDrawingObject.aPolyLinePoints; + rDrawingObject.xPropertySet->setPropertyValue("PolyPolygon", uno::Any(aPointSequenceSequence)); + } } } break; |