diff options
author | Markus Mohrhard <markus.mohrhard@collabora.co.uk> | 2014-08-16 07:14:28 +0200 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@collabora.co.uk> | 2014-08-16 07:14:28 +0200 |
commit | 66c6d1ef204f3507e7663a1b8b1be05b9ec71092 (patch) | |
tree | d40d3fd85f558351176a9f6d22ad1d49196385dd /xmloff | |
parent | a772be514e783e232b13c9ff7cde93fb0529c278 (diff) |
prevent invalid ods files with loext:fill-character
ODF specifies that extension elements in a document are removed before
the validation. With our old implementation of the number format export
this could result in two number:text elements following each other.
According to the spec a number:text element may not follow another
number:text element.
The number:text element before loext:fill is actually not that
interesting so it makes more sense to make this one an extension
element.
Possible documents showing issues:
fdo45268-1.xlsx
fdo49150-1.xlsx
and many more
Change-Id: I3ad92b8a61a246b3dbc0132d9a2c367488a766d0
Diffstat (limited to 'xmloff')
-rw-r--r-- | xmloff/source/style/xmlnumfe.cxx | 8 | ||||
-rw-r--r-- | xmloff/source/style/xmlnumfi.cxx | 1 |
2 files changed, 5 insertions, 4 deletions
diff --git a/xmloff/source/style/xmlnumfe.cxx b/xmloff/source/style/xmlnumfe.cxx index f24693a72e33..d0f46fc4dcbf 100644 --- a/xmloff/source/style/xmlnumfe.cxx +++ b/xmloff/source/style/xmlnumfe.cxx @@ -46,7 +46,6 @@ #include <xmloff/xmlexp.hxx> #include <set> -#include <boost/ptr_container/ptr_vector.hpp> using namespace ::com::sun::star; using namespace ::xmloff::token; @@ -336,11 +335,12 @@ void SvXMLNumFmtExport::AddToTextElement_Impl( const OUString& rString ) sTextContent.append( rString ); } -void SvXMLNumFmtExport::FinishTextElement_Impl() +void SvXMLNumFmtExport::FinishTextElement_Impl(bool bUseExtensionNS) { if ( !sTextContent.isEmpty() ) { - SvXMLElementExport aElem( rExport, XML_NAMESPACE_NUMBER, XML_TEXT, + sal_uInt16 nNS = bUseExtensionNS ? XML_NAMESPACE_LO_EXT : XML_NAMESPACE_NUMBER; + SvXMLElementExport aElem( rExport, nNS, XML_TEXT, true, false ); rExport.Characters( sTextContent.makeStringAndClear() ); } @@ -500,7 +500,7 @@ void SvXMLNumFmtExport::WriteMinutesElement_Impl( bool bLong ) void SvXMLNumFmtExport::WriteRepeatedElement_Impl( sal_Unicode nChar ) { - FinishTextElement_Impl(); + FinishTextElement_Impl(true); SvXMLElementExport aElem( rExport, XML_NAMESPACE_LO_EXT, XML_FILL_CHARACTER, true, false ); rExport.Characters( OUString( nChar ) ); diff --git a/xmloff/source/style/xmlnumfi.cxx b/xmloff/source/style/xmlnumfi.cxx index 676cd82276a0..35778d4f7a47 100644 --- a/xmloff/source/style/xmlnumfi.cxx +++ b/xmloff/source/style/xmlnumfi.cxx @@ -494,6 +494,7 @@ const SvXMLTokenMap& SvXMLNumImpData::GetStyleElemTokenMap() static const SvXMLTokenMapEntry aStyleElemMap[] = { // elements in a style + { XML_NAMESPACE_LO_EXT, XML_TEXT, XML_TOK_STYLE_TEXT }, { XML_NAMESPACE_NUMBER, XML_TEXT, XML_TOK_STYLE_TEXT }, { XML_NAMESPACE_LO_EXT, XML_FILL_CHARACTER, XML_TOK_STYLE_FILL_CHARACTER }, { XML_NAMESPACE_NUMBER, XML_FILL_CHARACTER, XML_TOK_STYLE_FILL_CHARACTER }, |