summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@suse.cz>2012-12-30 22:55:20 +0100
committerMiklos Vajna <vmiklos@suse.cz>2012-12-31 15:15:59 +0100
commit810fc6553c73634aa4c64be9c2ae83112493d81c (patch)
treecabc133a810db43520775e0a72272e415300b48a /writerfilter
parent3ea8026aefc358483292b459aaaead830e1f667d (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.cxx17
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;