diff options
author | David Tardon <dtardon@redhat.com> | 2014-05-09 13:07:33 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2014-05-09 12:18:10 +0000 |
commit | 9cdfc91bbe335232bc82455cc4aa8c8b3a96176f (patch) | |
tree | bead835b692b5d4cae98eac0b114eef323ef5d99 /sd | |
parent | b5f4a53d6d718e170303ea3d9344f86735fb8c99 (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.cxx | 38 |
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: */ |