diff options
Diffstat (limited to 'xmloff/source')
-rw-r--r-- | xmloff/source/text/XMLTextMarkImportContext.cxx | 11 | ||||
-rw-r--r-- | xmloff/source/text/txtimp.cxx | 1 |
2 files changed, 11 insertions, 1 deletions
diff --git a/xmloff/source/text/XMLTextMarkImportContext.cxx b/xmloff/source/text/XMLTextMarkImportContext.cxx index 65fcd19d9625..2017d8f21a3d 100644 --- a/xmloff/source/text/XMLTextMarkImportContext.cxx +++ b/xmloff/source/text/XMLTextMarkImportContext.cxx @@ -197,7 +197,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 dc6612b113b1..e88d5ed8b2e8 100644 --- a/xmloff/source/text/txtimp.cxx +++ b/xmloff/source/text/txtimp.cxx @@ -390,6 +390,7 @@ namespace } catch(const ElementExistException&) { + SAL_INFO("xmloff.text", "duplicate fieldmark param"); } } } |