From 6d2f4471ed541abeb3c8377a74b7736c5517f494 Mon Sep 17 00:00:00 2001 From: Hans Leidekker Date: Tue, 17 Oct 2017 11:37:27 +0200 Subject: [PATCH] webservices: Fix handling of namespace attributes in WsWriteNode. Signed-off-by: Hans Leidekker Signed-off-by: Alexandre Julliard --- dlls/webservices/writer.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/dlls/webservices/writer.c b/dlls/webservices/writer.c index 1baac07d190..f6917c6ae3d 100644 --- a/dlls/webservices/writer.c +++ b/dlls/webservices/writer.c @@ -4472,9 +4472,20 @@ static HRESULT write_set_attributes( struct writer *writer, WS_XML_ATTRIBUTE **a for (i = 0; i < count; i++) { - if ((hr = write_add_attribute( writer, attrs[i]->prefix, attrs[i]->localName, attrs[i]->ns, - attrs[i]->singleQuote )) != S_OK) return hr; - if ((hr = write_set_attribute_value( writer, attrs[i]->value )) != S_OK) return hr; + const WS_XML_STRING *prefix = attrs[i]->prefix; + const WS_XML_STRING *localname = attrs[i]->localName; + const WS_XML_STRING *ns = attrs[i]->ns; + BOOL single = attrs[i]->singleQuote; + + if (attrs[i]->isXmlNs) + { + if ((hr = add_namespace_attribute( writer, prefix, ns, single )) != S_OK) return hr; + } + else + { + if ((hr = write_add_attribute( writer, prefix, localname, ns, single )) != S_OK) return hr; + if ((hr = write_set_attribute_value( writer, attrs[i]->value )) != S_OK) return hr; + } } return S_OK; }