Module: wine Branch: master Commit: f0c08bd01e6d3b01bfc28961bb5922b94ecbb7bc URL: https://gitlab.winehq.org/wine/wine/-/commit/f0c08bd01e6d3b01bfc28961bb5922b...
Author: Daniel Lehman dlehman25@gmail.com Date: Tue Nov 28 21:51:28 2023 -0800
msxml3: Handle default namespace in get_prefix.
---
dlls/msxml3/attribute.c | 13 +++++-------- dlls/msxml3/tests/domdoc.c | 2 -- dlls/msxml4/tests/domdoc.c | 2 -- dlls/msxml6/tests/domdoc.c | 2 -- 4 files changed, 5 insertions(+), 14 deletions(-)
diff --git a/dlls/msxml3/attribute.c b/dlls/msxml3/attribute.c index 89a1f630021..76c690e1ad0 100644 --- a/dlls/msxml3/attribute.c +++ b/dlls/msxml3/attribute.c @@ -589,14 +589,11 @@ static HRESULT WINAPI domattr_get_prefix(
*prefix = NULL;
- if (ns) - { - /* special case for default namespace definition */ - if (xmlStrEqual(This->node.node->name, xmlns)) - *prefix = bstr_from_xmlChar(xmlns); - else if (ns->prefix) - *prefix = bstr_from_xmlChar(ns->prefix); - } + if (xmldoc_version(This->node.node->doc) != MSXML6 && + xmlStrEqual(This->node.node->name, xmlns)) + *prefix = bstr_from_xmlChar(xmlns); + else if (ns && ns->prefix) + *prefix = bstr_from_xmlChar(ns->prefix);
TRACE("prefix: %s\n", debugstr_w(*prefix));
diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index 3117ddabe4e..7997106bbd0 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -13785,10 +13785,8 @@ static void test_namespaces_as_attributes(void) hr = IXMLDOMNode_get_prefix(item, &str); if (test->prefixes[i]) { - todo_wine_if(test->todo) { ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(!lstrcmpW(str, _bstr_(test->prefixes[i])), "got %s\n", wine_dbgstr_w(str)); - } SysFreeString(str); } else diff --git a/dlls/msxml4/tests/domdoc.c b/dlls/msxml4/tests/domdoc.c index b2af7a1658e..3c5c34f3cb7 100644 --- a/dlls/msxml4/tests/domdoc.c +++ b/dlls/msxml4/tests/domdoc.c @@ -269,11 +269,9 @@ static void test_namespaces_as_attributes(void) if (test->prefixes[i]) { /* MSXML4 can report different results with different service packs */ - todo_wine_if(test->todo) { ok(hr == S_OK || broken(hr == S_FALSE), "Unexpected hr %#lx.\n", hr); ok(!lstrcmpW(str, test->prefixes[i]) || broken(!str), "got %s\n", wine_dbgstr_w(str)); - } SysFreeString(str); } else diff --git a/dlls/msxml6/tests/domdoc.c b/dlls/msxml6/tests/domdoc.c index 9283379731d..b36b8e6510a 100644 --- a/dlls/msxml6/tests/domdoc.c +++ b/dlls/msxml6/tests/domdoc.c @@ -105,10 +105,8 @@ static void test_create_attribute(void) } else { - todo_wine_if(ptr->todo) { ok(hr == S_FALSE, "%d: unexpected hr %#lx\n", i, hr); ok(str == NULL, "%d: got prefix %s\n", i, wine_dbgstr_w(str)); - } } SysFreeString(str);