Module: wine Branch: master Commit: f4b336379063399b08d5b56d8aa18dacc914e589 URL: http://source.winehq.org/git/wine.git/?a=commit;h=f4b336379063399b08d5b56d8a...
Author: Hans Leidekker hans@codeweavers.com Date: Tue May 17 10:51:56 2016 +0200
webservices: Flush the writer in WsWriteText.
Signed-off-by: Hans Leidekker hans@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/webservices/writer.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/dlls/webservices/writer.c b/dlls/webservices/writer.c index 35be982..a6ecf24 100644 --- a/dlls/webservices/writer.c +++ b/dlls/webservices/writer.c @@ -861,6 +861,13 @@ HRESULT WINAPI WsWriteEndCData( WS_XML_WRITER *handle, WS_ERROR *error ) return S_OK; }
+/* flush current start element if necessary */ +static HRESULT write_flush( struct writer *writer ) +{ + if (writer->state == WRITER_STATE_STARTELEMENT) return write_endstartelement( writer ); + return S_OK; +} + static HRESULT write_add_element_node( struct writer *writer, const WS_XML_STRING *prefix, const WS_XML_STRING *localname, const WS_XML_STRING *ns ) { @@ -868,9 +875,7 @@ static HRESULT write_add_element_node( struct writer *writer, const WS_XML_STRIN WS_XML_ELEMENT_NODE *elem; HRESULT hr;
- /* flush current start element if necessary */ - if (writer->state == WRITER_STATE_STARTELEMENT && ((hr = write_endstartelement( writer )) != S_OK)) - return hr; + if ((hr = write_flush( writer )) != S_OK) return hr;
if (!prefix && node_type( writer->current ) == WS_XML_NODE_TYPE_ELEMENT) prefix = writer->current->hdr.prefix; @@ -950,6 +955,7 @@ HRESULT WINAPI WsWriteText( WS_XML_WRITER *handle, const WS_XML_TEXT *text, WS_E } else { + if ((hr = write_flush( writer )) != S_OK) return hr; if ((hr = write_grow_buffer( writer, src->value.length )) != S_OK) return hr; write_bytes( writer, src->value.bytes, src->value.length ); }