diff options
author | Noel <noelgrandin@gmail.com> | 2020-10-19 09:36:04 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2020-10-22 09:12:24 +0200 |
commit | 2b946d245eaf4bd40a0091aa5508315fc37c81a0 (patch) | |
tree | 920dfc7985126f30acff2852b079c5faf0d73dba /include/xmloff/xmlimp.hxx | |
parent | 37a8142720b82d7ce6db0c09593de5cab11c51fd (diff) |
XmlFilterAdaptor: use the fastparser API when possible
part of the process of making SvXMLImport fastparser-only
Which uncovered several bugs because I end up stacking fast and
slow parsers, not once, but twice.
Specifically, we have a problem here with default namespaces e.g.
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<semantics><mrow><mstyle mathsize="12pt">
where going from slow- to fast- parser loses this information,
because there is no way to represent this in the fastparser world,
so we end up with nastiness when we transition back to slow-parser,
and then back-again to fast-parser.
So I fixed a couple of places XMLEmbeddedObjectImportContext
and in SvXMLLegacyToFastDocHandler, and then worked around some of
it by introducing an new XImporter2 interface so I could strip out
out one of the slowparser -> fastparser transitions.
Change-Id: I491487b99271898da50dc999d3b9b9c39cbd97fd
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104514
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'include/xmloff/xmlimp.hxx')
-rw-r--r-- | include/xmloff/xmlimp.hxx | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/xmloff/xmlimp.hxx b/include/xmloff/xmlimp.hxx index b73f565f5837..3e3a9cf89ad1 100644 --- a/include/xmloff/xmlimp.hxx +++ b/include/xmloff/xmlimp.hxx @@ -151,6 +151,7 @@ class XMLOFF_DLLPUBLIC SvXMLLegacyToFastDocHandler final : public ::cppu::WeakIm private: rtl::Reference< SvXMLImport > mrImport; rtl::Reference< sax_fastparser::FastAttributeList > mxFastAttributes; + std::stack<sal_uInt16> maDefaultNamespaces; public: SvXMLLegacyToFastDocHandler( const rtl::Reference< SvXMLImport > & rImport ); |