summaryrefslogtreecommitdiff
path: root/oox
diff options
context:
space:
mode:
authorJustin Luth <justin.luth@collabora.com>2019-10-30 11:11:45 +0300
committerXisco Faulí <xiscofauli@libreoffice.org>2019-10-31 10:33:52 +0100
commitfd0a32ec2654b0d6cc11883991dd2f4a85ae0a44 (patch)
treeed8b58641fe2f671eddc0d6118704ad0b8df4915 /oox
parente93e0fb7ac8f14230434653e5d5f318707712667 (diff)
tdf#128447 sc/vml: accept <? ?> xml prolog
... or processing instruction, or text directive. The inability to parse this was exposed in LO 6.2 with commit 2cae2ecfef47d8dd10647c10f9577392c1887d3a I added <?xml version="1.0" encoding="UTF-8" standalone="yes"?> to the top of vmlDrawing1.vml from the unit test, which invalidates the entire .vml file and the two controls are lost without this fix. Change-Id: Ia1e6d5f9bb932756f70dca59fa8b32004c9e8013 Reviewed-on: https://gerrit.libreoffice.org/81730 Reviewed-by: Michael Stahl <michael.stahl@cib.de> Tested-by: Jenkins (cherry picked from commit 32efd4529aba776eca9456e96656d542267874f3) Reviewed-on: https://gerrit.libreoffice.org/81814 Reviewed-by: Justin Luth <justin_luth@sil.org> Reviewed-by: Xisco Faulí <xiscofauli@libreoffice.org>
Diffstat (limited to 'oox')
-rw-r--r--oox/source/vml/vmlinputstream.cxx6
1 files changed, 6 insertions, 0 deletions
diff --git a/oox/source/vml/vmlinputstream.cxx b/oox/source/vml/vmlinputstream.cxx
index 2442fa9bc489..55d0ad17f008 100644
--- a/oox/source/vml/vmlinputstream.cxx
+++ b/oox/source/vml/vmlinputstream.cxx
@@ -168,6 +168,12 @@ void lclProcessElement( OStringBuffer& rBuffer, const OString& rElement )
// do nothing
}
+ // just append any xml prolog (text directive) or processing instructions: <?...?>
+ else if( (nElementLen >= 4) && (pcOpen[ 1 ] == '?') && (pcClose[ -1 ] == '?') )
+ {
+ rBuffer.append( rElement );
+ }
+
// replace '<br>' element with newline
else if( (nElementLen >= 4) && (pcOpen[ 1 ] == 'b') && (pcOpen[ 2 ] == 'r') && (lclFindNonWhiteSpace( pcOpen + 3, pcClose ) == pcClose) )
{