[Libreoffice-commits] core.git: Branch 'libreoffice-7-1-1' - xmloff/source
Michael Stahl (via logerrit)
logerrit at kemper.freedesktop.org
Wed Feb 24 14:26:06 UTC 2021
xmloff/source/text/XMLTextMarkImportContext.cxx | 11 ++++++++++-
xmloff/source/text/txtimp.cxx | 1 +
2 files changed, 11 insertions(+), 1 deletion(-)
New commits:
commit 85c04fb200469fb88933123358601480450864f4
Author: Michael Stahl <michael.stahl at allotropia.de>
AuthorDate: Mon Feb 22 16:10:47 2021 +0100
Commit: Christian Lohmaier <lohmaier+LibreOffice at googlemail.com>
CommitDate: Wed Feb 24 15:25:31 2021 +0100
tdf#140437 ODF import: fix for broken documents with field code as type
Not sure how old the bug that caused this and which filter it was
originally but currently the Word import filters don't do that any more.
This causes an exception since commit
dd24e21bb4f183048a738314934fc3f02ec093f1 so try to fix it up.
Change-Id: I087586054ebd5698ed8e8a4054869df202226e92
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111345
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl at allotropia.de>
(cherry picked from commit d62c93a831080ef332e416dc78f5600c2c5b9850)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111318
Reviewed-by: Xisco Fauli <xiscofauli at libreoffice.org>
(cherry picked from commit 3a1c4dc5887eee7313fe3f6cb20202df89ac5457)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111322
Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice at googlemail.com>
Tested-by: Christian Lohmaier <lohmaier+LibreOffice at googlemail.com>
diff --git a/xmloff/source/text/XMLTextMarkImportContext.cxx b/xmloff/source/text/XMLTextMarkImportContext.cxx
index 080009a8e6f6..505e86251650 100644
--- a/xmloff/source/text/XMLTextMarkImportContext.cxx
+++ b/xmloff/source/text/XMLTextMarkImportContext.cxx
@@ -200,7 +200,16 @@ static auto InsertFieldmark(SvXMLImport & rImport,
// setup fieldmark...
Reference<text::XFormField> const xFormField(xContent, UNO_QUERY);
assert(xFormField.is());
- xFormField->setFieldType(fieldmarkTypeName);
+ try {
+ xFormField->setFieldType(fieldmarkTypeName);
+ } catch (uno::RuntimeException const&) {
+ // tdf#140437 somehow old documents had the field code in the type
+ // attribute instead of field:param
+ SAL_INFO("xmloff.text", "invalid fieldmark type, converting to param");
+ // add without checking: FieldParamImporter::Import() catches ElementExistException
+ rHelper.addFieldParam(ODF_CODE_PARAM, fieldmarkTypeName);
+ xFormField->setFieldType(ODF_UNHANDLED);
+ }
rHelper.setCurrentFieldParamsTo(xFormField);
// move cursor after setFieldType as that may delete/re-insert
rHelper.GetCursor()->gotoRange(xContent->getAnchor()->getEnd(), false);
diff --git a/xmloff/source/text/txtimp.cxx b/xmloff/source/text/txtimp.cxx
index 2edf2d8f3f37..48a20c8bf360 100644
--- a/xmloff/source/text/txtimp.cxx
+++ b/xmloff/source/text/txtimp.cxx
@@ -782,6 +782,7 @@ namespace
}
catch(const ElementExistException&)
{
+ SAL_INFO("xmloff.text", "duplicate fieldmark param");
}
}
}
More information about the Libreoffice-commits
mailing list