From ad3a1ed90fc5a19c0191ec572f12f359f98a0958 Mon Sep 17 00:00:00 2001 From: Xisco Fauli Date: Wed, 21 Dec 2022 10:28:28 +0100 Subject: oox: fix crash in oox::drawingml::Transform2DContext::onCreateContext Similar to 68a259f5af8757923be8a226631f38366fe8e37b "tdf#152606: fix crash when opening specific pptx" See https://crashreport.libreoffice.org/stats/signature/oox::drawingml::Transform2DContext::onCreateContext(long,oox::AttributeList%20const%20&) Change-Id: Iac769edadb72590d8aef1ea3fc3845fce7a0bd86 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/144648 Tested-by: Jenkins Reviewed-by: Miklos Vajna --- oox/source/drawingml/transform2dcontext.cxx | 41 ++++++++++++++++------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/oox/source/drawingml/transform2dcontext.cxx b/oox/source/drawingml/transform2dcontext.cxx index 9d295d826b63..1cd67d1192db 100644 --- a/oox/source/drawingml/transform2dcontext.cxx +++ b/oox/source/drawingml/transform2dcontext.cxx @@ -328,26 +328,29 @@ ContextHandlerRef Transform2DContext::onCreateContext( sal_Int32 aElementToken, } } - // Calculate indent offsets - sal_Int32 nOffsetLeft = aUnrotatedTxXfrm.X - aPresetTextRectangle.X; - sal_Int32 nOffsetTop = aUnrotatedTxXfrm.Y - aPresetTextRectangle.Y; - sal_Int32 nOffsetRight - = aPresetTextRectangle.Width - aUnrotatedTxXfrm.Width - nOffsetLeft; - sal_Int32 nOffsetBottom - = aPresetTextRectangle.Height - aUnrotatedTxXfrm.Height - nOffsetTop; + if(mrShape.getTextBody()) + { + // Calculate indent offsets + sal_Int32 nOffsetLeft = aUnrotatedTxXfrm.X - aPresetTextRectangle.X; + sal_Int32 nOffsetTop = aUnrotatedTxXfrm.Y - aPresetTextRectangle.Y; + sal_Int32 nOffsetRight + = aPresetTextRectangle.Width - aUnrotatedTxXfrm.Width - nOffsetLeft; + sal_Int32 nOffsetBottom + = aPresetTextRectangle.Height - aUnrotatedTxXfrm.Height - nOffsetTop; - if (nOffsetLeft) - mrShape.getTextBody()->getTextProperties().moTextOffLeft - = GetCoordinate(nOffsetLeft); - if (nOffsetTop) - mrShape.getTextBody()->getTextProperties().moTextOffUpper - = GetCoordinate(nOffsetTop); - if (nOffsetRight) - mrShape.getTextBody()->getTextProperties().moTextOffRight - = GetCoordinate(nOffsetRight); - if (nOffsetBottom) - mrShape.getTextBody()->getTextProperties().moTextOffLower - = GetCoordinate(nOffsetBottom); + if (nOffsetLeft) + mrShape.getTextBody()->getTextProperties().moTextOffLeft + = GetCoordinate(nOffsetLeft); + if (nOffsetTop) + mrShape.getTextBody()->getTextProperties().moTextOffUpper + = GetCoordinate(nOffsetTop); + if (nOffsetRight) + mrShape.getTextBody()->getTextProperties().moTextOffRight + = GetCoordinate(nOffsetRight); + if (nOffsetBottom) + mrShape.getTextBody()->getTextProperties().moTextOffLower + = GetCoordinate(nOffsetBottom); + } } break; } -- cgit