Skip to content

Commit 9ffd88d

Browse files
vmikloss8321414
authored andcommitted
cool#11320 xmloff: warn, but not fail when can't export a numbering style
It's not clear how to reproduce this problem, but when it happens, an ODT file can't be saved because of an unhandled exception while producing styles.xml. Digging deeper, a container::NoSuchElementException is thrown in XStyleFamily::getByName(), and when that happens the backtrace is: #0 (anonymous namespace)::XStyleFamily::getByName (this=0x28fb8740, rName=...) at sw/source/core/unocore/unostyle.cxx:1031 #1 0x000075ae461d5d8c in (anonymous namespace)::XStyleFamily::getByIndex (this=0x28fb8740, nIndex=0) at sw/source/core/unocore/unostyle.cxx:1027 #2 0x000075ae541c4d77 in XMLTextListAutoStylePool::XMLTextListAutoStylePool (this=0x75ae243c1318, rExp=...) at include/com/sun/star/uno/Reference.h:384 I.e. the XMLTextListAutoStylePool gets the NumberingStyles style family, nStyles is 15, we try to get each numbering style by index, but already the first fails, because 0 gets turned into a 'Keine Liste' (no list) name, but getting that internally by name then fails. Fix the direct problem by catching container::NoSuchElementException in the XMLTextListAutoStylePool_Impl ctor, not expoting a list style is better than not being able to save the document at all. Almost certainly this is an effect of a problem earlier, but this should improve things till reproducer steps are found for that problem. Change-Id: Ia9fbe8db9dfe5f90f2583111c3d59b98a914798d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183402 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Andras Timar <[email protected]>
1 parent 4d2ed3c commit 9ffd88d

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

xmloff/source/text/XMLTextListAutoStylePool.cxx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,14 @@ XMLTextListAutoStylePool::XMLTextListAutoStylePool( SvXMLExport& rExp ) :
174174
for (sal_Int32 i = 0; i < nStyles; i++)
175175
{
176176
Reference<XStyle> xStyle;
177-
xStyles->getByIndex(i) >>= xStyle;
177+
try
178+
{
179+
xStyles->getByIndex(i) >>= xStyle;
180+
}
181+
catch (const container::NoSuchElementException&)
182+
{
183+
SAL_WARN("xmloff", "XMLTextListAutoStylePool_Impl ctor: can't export numbering style #" << i);
184+
}
178185
RegisterName(xStyle->getName());
179186
}
180187
}

0 commit comments

Comments
 (0)