xmloff/source/draw/shapeexport.cxx |   17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

New commits:
commit de62a3ec928fb871ca8165a9349862778c2f3f1b
Author: Michael Stahl <mst...@redhat.com>
Date:   Fri Nov 25 22:46:34 2016 +0100

    tdf#102479 ODF export: ignore exceptions when checking shape text
    
    The bugdoc contains a SwXShape-SwXTextFrame aggregate which contains
    only a table, no top-level paragraph.  Because of that,
    SwXTextFrame::createTextCursor() throws a RuntimeException.
    
    Assuming that the exception itself is intentional, work around it
    in XMLShapeExport::collectShapeAutoStyles() and assume that the
    getString() check that was added there in commit
    73fcb052edf1a21d785583bc53e8b4323b577bb1 is just a performance
    optimization; the actual export of auto styles and content uses
    XEnumerationAccess anyway.
    
    Change-Id: I7c23164b1e692ce16e5b4e03dd945e46768677de
    Reviewed-on: https://gerrit.libreoffice.org/31218
    Tested-by: Jenkins <c...@libreoffice.org>
    Reviewed-by: Michael Stahl <mst...@redhat.com>
    (cherry picked from commit 7661bbbaef31adfdb298b1447301b24a70f85834)
    Reviewed-on: https://gerrit.libreoffice.org/31377
    Tested-by: Michael Stahl <mst...@redhat.com>

diff --git a/xmloff/source/draw/shapeexport.cxx 
b/xmloff/source/draw/shapeexport.cxx
index a6656c7..f3880cb 100644
--- a/xmloff/source/draw/shapeexport.cxx
+++ b/xmloff/source/draw/shapeexport.cxx
@@ -303,7 +303,22 @@ void XMLShapeExport::collectShapeAutoStyles(const 
uno::Reference< drawing::XShap
     if( xPropSet.is() && bObjSupportsText )
     {
         uno::Reference< text::XText > xText(xShape, uno::UNO_QUERY);
-        if(xText.is() && !xText->getString().isEmpty())
+        bool bSkip = false;
+        if (xText.is())
+        {
+            try
+            {
+                bSkip = xText->getString().isEmpty();
+            }
+            catch (uno::RuntimeException const&)
+            {
+                // tdf#102479: SwXTextFrame that contains only a table will
+                // throw, but the table must be iterated so that
+                // SwXMLExport::ExportTableLines() can find its auto styles
+                // so do not skip it!
+            }
+        }
+        if (!bSkip)
         {
             uno::Reference< beans::XPropertySetInfo > xPropSetInfo( 
xPropSet->getPropertySetInfo() );
 
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to