diff options
author | Michael Stahl <mstahl@redhat.com> | 2016-11-25 22:46:34 +0100 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2016-11-30 10:34:33 +0000 |
commit | de62a3ec928fb871ca8165a9349862778c2f3f1b (patch) | |
tree | 6a0ba7c3c669f53238484a0bbbd28ed80790bd9d /xmloff | |
parent | 0046e3815406e99c8a5023c1046cbd8ac52a276b (diff) |
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 <ci@libreoffice.org>
Reviewed-by: Michael Stahl <mstahl@redhat.com>
(cherry picked from commit 7661bbbaef31adfdb298b1447301b24a70f85834)
Reviewed-on: https://gerrit.libreoffice.org/31377
Tested-by: Michael Stahl <mstahl@redhat.com>
Diffstat (limited to 'xmloff')
-rw-r--r-- | xmloff/source/draw/shapeexport.cxx | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/xmloff/source/draw/shapeexport.cxx b/xmloff/source/draw/shapeexport.cxx index a6656c738e73..f3880cb1c5ab 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() ); |