Nikolay Sivov : msxml3: Return qualified name from get_nodeName().
Alexandre Julliard
julliard at winehq.org
Wed Nov 16 12:46:45 CST 2011
Module: wine
Branch: master
Commit: ede880a1c38899dbe16467e30d59697e357363e0
URL: http://source.winehq.org/git/wine.git/?a=commit;h=ede880a1c38899dbe16467e30d59697e357363e0
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Wed Nov 16 00:31:40 2011 +0300
msxml3: Return qualified name from get_nodeName().
---
dlls/msxml3/node.c | 27 ++++++++++++++++++++++++---
dlls/msxml3/tests/domdoc.c | 4 ++--
2 files changed, 26 insertions(+), 5 deletions(-)
diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c
index 1df7331..38102ec 100644
--- a/dlls/msxml3/node.c
+++ b/dlls/msxml3/node.c
@@ -128,12 +128,33 @@ xmlnode *get_node_obj(IXMLDOMNode *node)
HRESULT node_get_nodeName(xmlnode *This, BSTR *name)
{
+ BSTR prefix, base;
+ HRESULT hr;
+
if (!name)
return E_INVALIDARG;
- *name = bstr_from_xmlChar(This->node->name);
- if (!*name)
- return S_FALSE;
+ hr = node_get_base_name(This, &base);
+ if (hr != S_OK) return hr;
+
+ hr = node_get_prefix(This, &prefix);
+ if (hr == S_OK)
+ {
+ static const WCHAR colW = ':';
+ WCHAR *ptr;
+
+ /* +1 for ':' */
+ ptr = *name = SysAllocStringLen(NULL, SysStringLen(base) + SysStringLen(prefix) + 1);
+ memcpy(ptr, prefix, SysStringByteLen(prefix));
+ ptr += SysStringLen(prefix);
+ memcpy(ptr++, &colW, sizeof(WCHAR));
+ memcpy(ptr, base, SysStringByteLen(base));
+
+ SysFreeString(base);
+ SysFreeString(prefix);
+ }
+ else
+ *name = base;
return S_OK;
}
diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c
index 699382f..3999b95 100644
--- a/dlls/msxml3/tests/domdoc.c
+++ b/dlls/msxml3/tests/domdoc.c
@@ -7009,7 +7009,7 @@ static void test_namespaces(void)
hr = IXMLDOMNode_get_nodeName(node2, &str);
EXPECT_HR(hr, S_OK);
- todo_wine ok(!lstrcmpW( str, _bstr_("Model:Package")), "got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW( str, _bstr_("Model:Package")), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
/* Test get_namespaceURI */
@@ -7030,7 +7030,7 @@ static void test_namespaces(void)
hr = IXMLDOMAttribute_get_nodeName(attr, &str);
EXPECT_HR(hr, S_OK);
- todo_wine ok(!lstrcmpW( str, _bstr_("Model:name2")), "got %s\n", wine_dbgstr_w(str));
+ ok(!lstrcmpW( str, _bstr_("Model:name2")), "got %s\n", wine_dbgstr_w(str));
SysFreeString(str);
hr = IXMLDOMAttribute_get_prefix(attr, &str);
More information about the wine-cvs
mailing list