diff options
author | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2013-01-04 02:59:23 +0100 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2013-01-04 03:34:24 +0100 |
commit | 3e85d9c62c69ee39dd4c6ae7cd556fdf53f5e01d (patch) | |
tree | b8cbef305a4f7c5a4655ab3e97fa4fce571aa66f | |
parent | 6e26f941e162da811fcc449f2f6cce083d21100c (diff) |
workaround problems with row import, fdo#58539
This fixes another crash with gnome#627150
Change-Id: Ibd259c77f8df04b52c9fee0699e0edd1ad30e94e
-rw-r--r-- | sc/source/filter/xml/xmlrowi.cxx | 7 | ||||
-rw-r--r-- | sc/source/filter/xml/xmlrowi.hxx | 2 |
2 files changed, 9 insertions, 0 deletions
diff --git a/sc/source/filter/xml/xmlrowi.cxx b/sc/source/filter/xml/xmlrowi.cxx index ea5816516f9c..67d1f23ae43a 100644 --- a/sc/source/filter/xml/xmlrowi.cxx +++ b/sc/source/filter/xml/xmlrowi.cxx @@ -97,6 +97,7 @@ ScXMLTableRowContext::ScXMLTableRowContext( ScXMLImport& rImport, break;*/ } } + mnLastRow = GetScImport().GetTables().GetCurrentRow() + nRepeatedRows; GetScImport().GetTables().AddRow(); GetScImport().GetTables().SetRowStyle(sCellStyleName); } @@ -154,6 +155,12 @@ void ScXMLTableRowContext::EndElement() } SCTAB nSheet = rXMLImport.GetTables().GetCurrentSheet(); sal_Int32 nCurrentRow(rXMLImport.GetTables().GetCurrentRow()); + if(nCurrentRow != mnLastRow) + { + // this document is most likely invalid in some way + SAL_WARN("sc", "we did not generate enough rows in the cell import!!"); + nCurrentRow = mnLastRow; + } uno::Reference<sheet::XSpreadsheet> xSheet(rXMLImport.GetTables().GetCurrentXSheet()); if(xSheet.is()) { diff --git a/sc/source/filter/xml/xmlrowi.hxx b/sc/source/filter/xml/xmlrowi.hxx index a900ff781d11..02c5255f883f 100644 --- a/sc/source/filter/xml/xmlrowi.hxx +++ b/sc/source/filter/xml/xmlrowi.hxx @@ -29,6 +29,8 @@ class ScXMLTableRowContext : public SvXMLImportContext rtl::OUString sStyleName; rtl::OUString sVisibility; sal_Int32 nRepeatedRows; + sal_Int32 mnLastRow; // to workaround problems with the cell import, can be removed when the cell + // always adds enough rows bool bHasCell; const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); } |