oox/source/drawingml/transform2dcontext.cxx |   41 +++++++++++++++-------------
 1 file changed, 22 insertions(+), 19 deletions(-)

New commits:
commit d5dd8a4e77e858b02ac626d8902fffa2d010ae49
Author:     Xisco Fauli <xiscofa...@libreoffice.org>
AuthorDate: Wed Dec 21 10:28:28 2022 +0100
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Wed Dec 21 19:07:54 2022 +0000

    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 <vmik...@collabora.com>
    (cherry picked from commit ad3a1ed90fc5a19c0191ec572f12f359f98a0958)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/144669
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

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;
         }

Reply via email to