From: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> --- dlls/xmllite/writer.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/dlls/xmllite/writer.c b/dlls/xmllite/writer.c index 300045a39ae..a92ba881ae4 100644 --- a/dlls/xmllite/writer.c +++ b/dlls/xmllite/writer.c @@ -2064,23 +2064,24 @@ static HRESULT WINAPI xmlwriter_WriteStartElement(IXmlWriter *iface, LPCWSTR pre static HRESULT WINAPI xmlwriter_WriteString(IXmlWriter *iface, const WCHAR *string) { - xmlwriter *This = impl_from_IXmlWriter(iface); + xmlwriter *writer = impl_from_IXmlWriter(iface); + HRESULT hr = S_OK; - TRACE("%p %s\n", This, debugstr_w(string)); + TRACE("%p, %s.\n", iface, debugstr_w(string)); if (!string) return S_OK; - switch (This->state) + switch (writer->state) { case XmlWriterState_Initial: return E_UNEXPECTED; case XmlWriterState_ElemStarted: - writer_close_starttag(This); + hr = writer_close_starttag(writer); break; case XmlWriterState_Ready: case XmlWriterState_DocClosed: - This->state = XmlWriterState_DocClosed; + writer->state = XmlWriterState_DocClosed; return WR_E_INVALIDACTION; case XmlWriterState_InvalidEncoding: return MX_E_ENCODING; @@ -2088,8 +2089,13 @@ static HRESULT WINAPI xmlwriter_WriteString(IXmlWriter *iface, const WCHAR *stri ; } - This->textnode = 1; - return write_escaped_string(This, string, ~0u); + if (SUCCEEDED(hr)) + { + writer->textnode = 1; + hr = write_escaped_string(writer, string, ~0u); + } + + return hr; } static HRESULT WINAPI xmlwriter_WriteSurrogateCharEntity(IXmlWriter *iface, WCHAR wchLow, WCHAR wchHigh) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9059