Module: wine Branch: master Commit: 5de86e12ade42a3f37c62aee343bce88cf24601f URL: https://gitlab.winehq.org/wine/wine/-/commit/5de86e12ade42a3f37c62aee343bce8...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Wed Sep 14 23:53:13 2022 +0300
xmllite/writer: Close open tag on WriteProcessingInstruction().
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com
---
dlls/xmllite/tests/writer.c | 25 +++++++++++++++++++++++++ dlls/xmllite/writer.c | 2 ++ 2 files changed, 27 insertions(+)
diff --git a/dlls/xmllite/tests/writer.c b/dlls/xmllite/tests/writer.c index 72ca7309355..f01f6194a4d 100644 --- a/dlls/xmllite/tests/writer.c +++ b/dlls/xmllite/tests/writer.c @@ -2131,6 +2131,30 @@ static void test_WriteWhitespace(void) IXmlWriter_Release(writer); }
+static void test_WriteProcessingInstruction(void) +{ + IXmlWriter *writer; + IStream *stream; + HRESULT hr; + + hr = CreateXmlWriter(&IID_IXmlWriter, (void **)&writer, NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + stream = writer_set_output(writer); + + hr = IXmlWriter_WriteStartElement(writer, NULL, L"w", NULL); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + hr = IXmlWriter_WriteProcessingInstruction(writer, L"pi", L"content"); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = IXmlWriter_Flush(writer); + ok(hr == S_OK, "Failed to flush, hr %#lx.\n", hr); + CHECK_OUTPUT(stream, "<w><?pi content?>"); + IStream_Release(stream); + + IXmlWriter_Release(writer); +} + START_TEST(writer) { test_writer_create(); @@ -2154,4 +2178,5 @@ START_TEST(writer) test_WriteString(); test_WriteDocType(); test_WriteWhitespace(); + test_WriteProcessingInstruction(); } diff --git a/dlls/xmllite/writer.c b/dlls/xmllite/writer.c index 99dfff3c918..1df4c1dc922 100644 --- a/dlls/xmllite/writer.c +++ b/dlls/xmllite/writer.c @@ -1500,6 +1500,8 @@ static HRESULT WINAPI xmlwriter_WriteProcessingInstruction(IXmlWriter *iface, LP return WR_E_INVALIDACTION; break; case XmlWriterState_ElemStarted: + writer_close_starttag(This); + break; case XmlWriterState_DocClosed: return WR_E_INVALIDACTION; default: