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>
diff --git a/oox/source/vml/vmlinputstream.cxx b/oox/source/vml/vmlinputstream.cxx
index 2442fa9..55d0ad1 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) )
    {
diff --git a/sc/qa/unit/data/xlsx/tdf120301_xmlSpaceParsing.xlsx b/sc/qa/unit/data/xlsx/tdf120301_xmlSpaceParsing.xlsx
index 0677a0c..b28c4dd 100644
--- a/sc/qa/unit/data/xlsx/tdf120301_xmlSpaceParsing.xlsx
+++ b/sc/qa/unit/data/xlsx/tdf120301_xmlSpaceParsing.xlsx
Binary files differ