summaryrefslogtreecommitdiff
path: root/sd
diff options
context:
space:
mode:
authorDavid Tardon <dtardon@redhat.com>2014-05-09 13:07:33 +0200
committerMichael Stahl <mstahl@redhat.com>2014-05-09 12:18:10 +0000
commit9cdfc91bbe335232bc82455cc4aa8c8b3a96176f (patch)
treebead835b692b5d4cae98eac0b114eef323ef5d99 /sd
parentb5f4a53d6d718e170303ea3d9344f86735fb8c99 (diff)
rhbz#1071604 don't crash if slide layout configs are missing
Change-Id: I5cbf4ed0683cc5736a45fb980827b1b56bd0c74c (cherry picked from commit df71f13b80c30cb98e310baf8f6aee11f8cbe81d) Reviewed-on: https://gerrit.libreoffice.org/9289 Tested-by: Michael Stahl <mstahl@redhat.com> Reviewed-by: Michael Stahl <mstahl@redhat.com>
Diffstat (limited to 'sd')
-rw-r--r--sd/source/core/drawdoc.cxx38
1 files changed, 26 insertions, 12 deletions
diff --git a/sd/source/core/drawdoc.cxx b/sd/source/core/drawdoc.cxx
index f0c14c6df739..5716b43cb276 100644
--- a/sd/source/core/drawdoc.cxx
+++ b/sd/source/core/drawdoc.cxx
@@ -1006,12 +1006,19 @@ void SdDrawDocument::InitLayoutVector()
const Reference<XDocumentBuilder> xDocBuilder(
DocumentBuilder::create( comphelper::getComponentContext (xServiceFactory) ));
- // loop over every layout entry in current file
- const Reference<XDocument> xDoc = xDocBuilder->parseURI( sFilename );
- const Reference<XNodeList> layoutlist = xDoc->getElementsByTagName("layout");
- const int nElements = layoutlist->getLength();
- for(int index=0; index < nElements; index++)
- maLayoutInfo.push_back( layoutlist->item(index) );
+ try
+ {
+ // loop over every layout entry in current file
+ const Reference<XDocument> xDoc = xDocBuilder->parseURI( sFilename );
+ const Reference<XNodeList> layoutlist = xDoc->getElementsByTagName("layout");
+ const int nElements = layoutlist->getLength();
+ for(int index=0; index < nElements; index++)
+ maLayoutInfo.push_back( layoutlist->item(index) );
+ }
+ catch (const uno::Exception &)
+ {
+ // skip missing config. files
+ }
}
}
@@ -1035,12 +1042,19 @@ void SdDrawDocument::InitObjectVector()
const Reference<XDocumentBuilder> xDocBuilder(
DocumentBuilder::create( comphelper::getComponentContext (xServiceFactory) ));
- // loop over every object entry in current file
- const Reference<XDocument> xDoc = xDocBuilder->parseURI( sFilename );
- const Reference<XNodeList> objectlist = xDoc->getElementsByTagName("object");
- const int nElements = objectlist->getLength();
- for(int index=0; index < nElements; index++)
- maPresObjectInfo.push_back( objectlist->item(index) );
+ try
+ {
+ // loop over every object entry in current file
+ const Reference<XDocument> xDoc = xDocBuilder->parseURI( sFilename );
+ const Reference<XNodeList> objectlist = xDoc->getElementsByTagName("object");
+ const int nElements = objectlist->getLength();
+ for(int index=0; index < nElements; index++)
+ maPresObjectInfo.push_back( objectlist->item(index) );
+ }
+ catch (const uno::Exception &)
+ {
+ // skip missing config. files
+ }
}
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */