From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/xmllite/writer.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/dlls/xmllite/writer.c b/dlls/xmllite/writer.c index fa6665d15f5..300045a39ae 100644 --- a/dlls/xmllite/writer.c +++ b/dlls/xmllite/writer.c @@ -1251,6 +1251,7 @@ static HRESULT write_escaped_string(xmlwriter *writer, const WCHAR *string, unsi static HRESULT WINAPI xmlwriter_WriteChars(IXmlWriter *iface, const WCHAR *characters, UINT length) { xmlwriter *writer = impl_from_IXmlWriter(iface); + HRESULT hr = S_OK;
TRACE("%p, %s, %d.\n", iface, debugstr_wn(characters, length), length);
@@ -1267,7 +1268,7 @@ static HRESULT WINAPI xmlwriter_WriteChars(IXmlWriter *iface, const WCHAR *chara case XmlWriterState_InvalidEncoding: return MX_E_ENCODING; case XmlWriterState_ElemStarted: - writer_close_starttag(writer); + hr = writer_close_starttag(writer); break; case XmlWriterState_Ready: case XmlWriterState_DocClosed: @@ -1277,8 +1278,13 @@ static HRESULT WINAPI xmlwriter_WriteChars(IXmlWriter *iface, const WCHAR *chara ; }
- writer->textnode = 1; - return write_escaped_string(writer, characters, length); + if (SUCCEEDED(hr)) + { + writer->textnode = 1; + hr = write_escaped_string(writer, characters, length); + } + + return hr; }
static HRESULT WINAPI xmlwriter_WriteComment(IXmlWriter *iface, LPCWSTR comment)
From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@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)
From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/xmllite/writer.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-)
diff --git a/dlls/xmllite/writer.c b/dlls/xmllite/writer.c index a92ba881ae4..894d396d183 100644 --- a/dlls/xmllite/writer.c +++ b/dlls/xmllite/writer.c @@ -1592,52 +1592,52 @@ static HRESULT WINAPI xmlwriter_WriteEntityRef(IXmlWriter *iface, LPCWSTR pwszNa
static HRESULT WINAPI xmlwriter_WriteFullEndElement(IXmlWriter *iface) { - xmlwriter *This = impl_from_IXmlWriter(iface); + xmlwriter *writer = impl_from_IXmlWriter(iface); struct element *element; HRESULT hr = S_OK;
- TRACE("%p\n", This); + TRACE("%p.\n", iface);
- switch (This->state) + switch (writer->state) { case XmlWriterState_Initial: return E_UNEXPECTED; 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; case XmlWriterState_ElemStarted: - writer_close_starttag(This); + if (FAILED(hr = writer_close_starttag(writer))) return hr; break; default: ; }
- element = pop_element(This); + element = pop_element(writer); if (!element) return WR_E_INVALIDACTION;
- writer_dec_indent(This); + writer_dec_indent(writer);
/* don't force full end tag to the next line */ - if (This->state == XmlWriterState_ElemStarted) + if (writer->state == XmlWriterState_ElemStarted) { - This->state = XmlWriterState_Content; - This->textnode = 0; + writer->state = XmlWriterState_Content; + writer->textnode = 0; } else - write_node_indent(This, &hr); + write_node_indent(writer, &hr);
/* write full end tag */ - write_output_buffer(This->output, L"</", 2); - write_output_buffer(This->output, element->qname, element->len); - write_output_buffer_char(This->output, '>'); + write_output(writer, L"</", 2, &hr); + write_output(writer, element->qname, element->len, &hr); + write_output(writer, L">", 1, &hr);
- writer_free_element(This, element); + writer_free_element(writer, element);
- return S_OK; + return hr; }
static HRESULT WINAPI xmlwriter_WriteName(IXmlWriter *iface, LPCWSTR pwszName)
From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/xmllite/writer.c | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-)
diff --git a/dlls/xmllite/writer.c b/dlls/xmllite/writer.c index 894d396d183..96016807a17 100644 --- a/dlls/xmllite/writer.c +++ b/dlls/xmllite/writer.c @@ -1402,22 +1402,22 @@ static HRESULT WINAPI xmlwriter_WriteDocType(IXmlWriter *iface, LPCWSTR name, LP static HRESULT WINAPI xmlwriter_WriteElementString(IXmlWriter *iface, LPCWSTR prefix, LPCWSTR local_name, LPCWSTR uri, LPCWSTR value) { - xmlwriter *This = impl_from_IXmlWriter(iface); + xmlwriter *writer = impl_from_IXmlWriter(iface); int prefix_len, local_len; struct ns *ns; HRESULT hr;
- TRACE("(%p)->(%s %s %s %s)\n", This, wine_dbgstr_w(prefix), wine_dbgstr_w(local_name), + TRACE("%p, %s, %s, %s, %s.\n", iface, wine_dbgstr_w(prefix), wine_dbgstr_w(local_name), wine_dbgstr_w(uri), wine_dbgstr_w(value));
- switch (This->state) + switch (writer->state) { case XmlWriterState_Initial: return E_UNEXPECTED; case XmlWriterState_InvalidEncoding: return MX_E_ENCODING; case XmlWriterState_ElemStarted: - writer_close_starttag(This); + if (FAILED(hr = writer_close_starttag(writer))) return hr; break; case XmlWriterState_DocClosed: return WR_E_INVALIDACTION; @@ -1435,7 +1435,7 @@ static HRESULT WINAPI xmlwriter_WriteElementString(IXmlWriter *iface, LPCWSTR pr if (FAILED(hr = is_valid_ncname(local_name, &local_len))) return hr;
- ns = writer_find_ns(This, prefix, uri); + ns = writer_find_ns(writer, prefix, uri); if (!ns && !is_empty_string(prefix) && is_empty_string(uri)) return WR_E_NSPREFIXWITHEMPTYNSURI;
@@ -1448,36 +1448,36 @@ static HRESULT WINAPI xmlwriter_WriteElementString(IXmlWriter *iface, LPCWSTR pr return WR_E_XMLNSURIDECLARATION; }
- write_encoding_bom(This, &hr); - write_node_indent(This, &hr); + write_encoding_bom(writer, &hr); + write_node_indent(writer, &hr);
- write_output_buffer_char(This->output, '<'); + write_output(writer, L"<", 1, &hr); if (ns) - write_output_qname(This->output, ns->prefix, ns->prefix_len, local_name, local_len); + write_output_qname(writer->output, ns->prefix, ns->prefix_len, local_name, local_len); else - write_output_qname(This->output, prefix, prefix_len, local_name, local_len); + write_output_qname(writer->output, prefix, prefix_len, local_name, local_len);
if (!ns && (prefix_len || !is_empty_string(uri))) { - write_output_qname(This->output, L" xmlns", 6, prefix, prefix_len); - write_output_buffer_char(This->output, '='); - write_output_buffer_quoted(This->output, uri, -1); + write_output_qname(writer->output, L" xmlns", 6, prefix, prefix_len); + write_output(writer, L"=", 1, &hr); + write_output_buffer_quoted(writer->output, uri, -1); }
if (value) { - write_output_buffer_char(This->output, '>'); - write_output_buffer(This->output, value, -1); - write_output_buffer(This->output, L"</", 2); - write_output_qname(This->output, prefix, prefix_len, local_name, local_len); - write_output_buffer_char(This->output, '>'); + write_output(writer, L">", 1, &hr); + write_output(writer, value, -1, &hr); + write_output(writer, L"</", 2, &hr); + write_output_qname(writer->output, prefix, prefix_len, local_name, local_len); + write_output(writer, L">", 1, &hr); } else - write_output_buffer(This->output, L" />", 3); + write_output(writer, L" />", 3, &hr);
- This->state = XmlWriterState_Content; + writer->state = XmlWriterState_Content;
- return S_OK; + return hr; }
static HRESULT write_end_element(xmlwriter *writer, const struct element *element)
From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/xmllite/writer.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/dlls/xmllite/writer.c b/dlls/xmllite/writer.c index 96016807a17..76b4afafbb5 100644 --- a/dlls/xmllite/writer.c +++ b/dlls/xmllite/writer.c @@ -1882,21 +1882,21 @@ static HRESULT WINAPI xmlwriter_WriteQualifiedName(IXmlWriter *iface, LPCWSTR pw
static HRESULT WINAPI xmlwriter_WriteRaw(IXmlWriter *iface, LPCWSTR data) { - xmlwriter *This = impl_from_IXmlWriter(iface); + xmlwriter *writer = impl_from_IXmlWriter(iface); unsigned int count; HRESULT hr = S_OK;
- TRACE("%p %s\n", This, debugstr_w(data)); + TRACE("%p, %s.\n", iface, debugstr_w(data));
if (!data) return S_OK;
- switch (This->state) + switch (writer->state) { case XmlWriterState_Initial: return E_UNEXPECTED; case XmlWriterState_Ready: - write_xmldecl(This, XmlStandalone_Omit, &hr); + write_xmldecl(writer, XmlStandalone_Omit, &hr); /* fallthrough */ case XmlWriterState_DocStarted: case XmlWriterState_PIDocStarted: @@ -1904,17 +1904,17 @@ static HRESULT WINAPI xmlwriter_WriteRaw(IXmlWriter *iface, LPCWSTR data) case XmlWriterState_InvalidEncoding: return MX_E_ENCODING; case XmlWriterState_ElemStarted: - writer_close_starttag(This); + hr = writer_close_starttag(writer); break; default: - This->state = XmlWriterState_DocClosed; + writer->state = XmlWriterState_DocClosed; return WR_E_INVALIDACTION; }
- while (*data) + while (SUCCEEDED(hr) && *data) { - if (FAILED(hr = writer_get_next_write_count(data, ~0u, &count))) return hr; - if (FAILED(hr = write_output_buffer(This->output, data, count))) return hr; + if (FAILED(hr = writer_get_next_write_count(data, ~0u, &count))) break; + if (FAILED(hr = write_output(writer, data, count, &hr))) break;
data += count; }