[PATCH 5/6] Get rid of ::get_prefix() forward

Nikolay Sivov nsivov at codeweavers.com
Sun Oct 31 04:22:53 CDT 2010


---
 dlls/msxml3/attribute.c     |    5 ++-
 dlls/msxml3/cdata.c         |    5 ++-
 dlls/msxml3/comment.c       |    5 ++-
 dlls/msxml3/docfrag.c       |    5 ++-
 dlls/msxml3/domdoc.c        |    5 ++-
 dlls/msxml3/element.c       |    5 ++-
 dlls/msxml3/entityref.c     |    5 ++-
 dlls/msxml3/msxml_private.h |   10 ++++++++
 dlls/msxml3/node.c          |   20 +++++----------
 dlls/msxml3/pi.c            |    5 ++-
 dlls/msxml3/tests/domdoc.c  |   54 ++++++++++++++++++++++++++++++++++++++++++-
 dlls/msxml3/text.c          |    5 ++-
 12 files changed, 97 insertions(+), 32 deletions(-)

diff --git a/dlls/msxml3/attribute.c b/dlls/msxml3/attribute.c
index c545a76..c9a2cc7 100644
--- a/dlls/msxml3/attribute.c
+++ b/dlls/msxml3/attribute.c
@@ -497,10 +497,11 @@ static HRESULT WINAPI domattr_get_namespaceURI(
 
 static HRESULT WINAPI domattr_get_prefix(
     IXMLDOMAttribute *iface,
-    BSTR* p)
+    BSTR* prefix)
 {
     domattr *This = impl_from_IXMLDOMAttribute( iface );
-    return IXMLDOMNode_get_prefix( IXMLDOMNode_from_impl(&This->node), p );
+    TRACE("(%p)->(%p)\n", This, prefix);
+    return node_get_prefix( &This->node, prefix );
 }
 
 static HRESULT WINAPI domattr_get_baseName(
diff --git a/dlls/msxml3/cdata.c b/dlls/msxml3/cdata.c
index 59898d4..e62a7d6 100644
--- a/dlls/msxml3/cdata.c
+++ b/dlls/msxml3/cdata.c
@@ -508,10 +508,11 @@ static HRESULT WINAPI domcdata_get_namespaceURI(
 
 static HRESULT WINAPI domcdata_get_prefix(
     IXMLDOMCDATASection *iface,
-    BSTR* p)
+    BSTR* prefix)
 {
     domcdata *This = impl_from_IXMLDOMCDATASection( iface );
-    return IXMLDOMNode_get_prefix( IXMLDOMNode_from_impl(&This->node), p );
+    TRACE("(%p)->(%p)\n", This, prefix);
+    return return_null_bstr( prefix );
 }
 
 static HRESULT WINAPI domcdata_get_baseName(
diff --git a/dlls/msxml3/comment.c b/dlls/msxml3/comment.c
index 7358bd5..b749638 100644
--- a/dlls/msxml3/comment.c
+++ b/dlls/msxml3/comment.c
@@ -501,10 +501,11 @@ static HRESULT WINAPI domcomment_get_namespaceURI(
 
 static HRESULT WINAPI domcomment_get_prefix(
     IXMLDOMComment *iface,
-    BSTR* p)
+    BSTR* prefix)
 {
     domcomment *This = impl_from_IXMLDOMComment( iface );
-    return IXMLDOMNode_get_prefix( IXMLDOMNode_from_impl(&This->node), p );
+    TRACE("(%p)->(%p)\n", This, prefix);
+    return return_null_bstr( prefix );
 }
 
 static HRESULT WINAPI domcomment_get_baseName(
diff --git a/dlls/msxml3/docfrag.c b/dlls/msxml3/docfrag.c
index 36d3cac..2c0ad81 100644
--- a/dlls/msxml3/docfrag.c
+++ b/dlls/msxml3/docfrag.c
@@ -505,10 +505,11 @@ static HRESULT WINAPI domfrag_get_namespaceURI(
 
 static HRESULT WINAPI domfrag_get_prefix(
     IXMLDOMDocumentFragment *iface,
-    BSTR* p)
+    BSTR* prefix)
 {
     domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
-    return IXMLDOMNode_get_prefix( IXMLDOMNode_from_impl(&This->node), p );
+    TRACE("(%p)->(%p)\n", This, prefix);
+    return return_null_bstr( prefix );
 }
 
 static HRESULT WINAPI domfrag_get_baseName(
diff --git a/dlls/msxml3/domdoc.c b/dlls/msxml3/domdoc.c
index f301470..b70acd4 100644
--- a/dlls/msxml3/domdoc.c
+++ b/dlls/msxml3/domdoc.c
@@ -1331,10 +1331,11 @@ static HRESULT WINAPI domdoc_get_namespaceURI(
 
 static HRESULT WINAPI domdoc_get_prefix(
     IXMLDOMDocument3 *iface,
-    BSTR* prefixString )
+    BSTR* prefix )
 {
     domdoc *This = impl_from_IXMLDOMDocument3( iface );
-    return IXMLDOMNode_get_prefix( IXMLDOMNode_from_impl(&This->node), prefixString );
+    TRACE("(%p)->(%p)\n", This, prefix);
+    return return_null_bstr( prefix );
 }
 
 
diff --git a/dlls/msxml3/element.c b/dlls/msxml3/element.c
index cf8be13..fd49874 100644
--- a/dlls/msxml3/element.c
+++ b/dlls/msxml3/element.c
@@ -553,10 +553,11 @@ static HRESULT WINAPI domelem_get_namespaceURI(
 
 static HRESULT WINAPI domelem_get_prefix(
     IXMLDOMElement *iface,
-    BSTR* p)
+    BSTR* prefix)
 {
     domelem *This = impl_from_IXMLDOMElement( iface );
-    return IXMLDOMNode_get_prefix( IXMLDOMNode_from_impl(&This->node), p );
+    TRACE("(%p)->(%p)\n", This, prefix);
+    return node_get_prefix( &This->node, prefix );
 }
 
 static HRESULT WINAPI domelem_get_baseName(
diff --git a/dlls/msxml3/entityref.c b/dlls/msxml3/entityref.c
index 1fcbdd9..fae2a2c 100644
--- a/dlls/msxml3/entityref.c
+++ b/dlls/msxml3/entityref.c
@@ -499,10 +499,11 @@ static HRESULT WINAPI entityref_get_namespaceURI(
 
 static HRESULT WINAPI entityref_get_prefix(
     IXMLDOMEntityReference *iface,
-    BSTR* p)
+    BSTR* prefix)
 {
     entityref *This = impl_from_IXMLDOMEntityReference( iface );
-    return IXMLDOMNode_get_prefix( IXMLDOMNode_from_impl(&This->node), p );
+    TRACE("(%p)->(%p)\n", This, prefix);
+    return node_get_prefix( &This->node, prefix );
 }
 
 static HRESULT WINAPI entityref_get_baseName(
diff --git a/dlls/msxml3/msxml_private.h b/dlls/msxml3/msxml_private.h
index 0d41eac..8ae84cf 100644
--- a/dlls/msxml3/msxml_private.h
+++ b/dlls/msxml3/msxml_private.h
@@ -193,6 +193,7 @@ extern HRESULT node_replace_child(xmlnode*,IXMLDOMNode*,IXMLDOMNode*,IXMLDOMNode
 extern HRESULT node_put_text(xmlnode*,BSTR);
 extern HRESULT node_get_xml(xmlnode*,BOOL,BOOL,BSTR*);
 extern HRESULT node_clone(xmlnode*,VARIANT_BOOL,IXMLDOMNode**);
+extern HRESULT node_get_prefix(xmlnode*,BSTR*);
 
 extern HRESULT DOMDocument_create_from_xmldoc(xmlDocPtr xmldoc, IXMLDOMDocument3 **document);
 
@@ -253,6 +254,15 @@ static inline HRESULT return_null_var(VARIANT *p)
     return S_FALSE;
 }
 
+static inline HRESULT return_null_bstr(BSTR *p)
+{
+    if(!p)
+        return E_INVALIDARG;
+
+    *p = NULL;
+    return S_FALSE;
+}
+
 #endif
 
 extern void* libxslt_handle;
diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c
index e13fc4c..3b2ce35 100644
--- a/dlls/msxml3/node.c
+++ b/dlls/msxml3/node.c
@@ -1151,29 +1151,23 @@ static HRESULT WINAPI xmlnode_get_namespaceURI(
     return *namespaceURI ? S_OK : S_FALSE;
 }
 
-static HRESULT WINAPI xmlnode_get_prefix(
-    IXMLDOMNode *iface,
-    BSTR* prefixString)
+HRESULT node_get_prefix(xmlnode *This, BSTR *prefix)
 {
-    xmlnode *This = impl_from_IXMLDOMNode( iface );
     xmlNsPtr *ns;
 
-    TRACE("(%p)->(%p)\n", This, prefixString );
+    if (!prefix) return E_INVALIDARG;
 
-    if(!prefixString)
-        return E_INVALIDARG;
-
-    *prefixString = NULL;
+    *prefix = NULL;
 
     if ((ns = xmlGetNsList(This->node->doc, This->node)))
     {
-        if (ns[0]->prefix) *prefixString = bstr_from_xmlChar( ns[0]->prefix );
+        if (ns[0]->prefix) *prefix = bstr_from_xmlChar( ns[0]->prefix );
         xmlFree(ns);
     }
 
-    TRACE("prefix: %s\n", debugstr_w(*prefixString));
+    TRACE("prefix: %s\n", debugstr_w(*prefix));
 
-    return *prefixString ? S_OK : S_FALSE;
+    return *prefix ? S_OK : S_FALSE;
 }
 
 static HRESULT WINAPI xmlnode_get_baseName(
@@ -1264,7 +1258,7 @@ static const struct IXMLDOMNodeVtbl xmlnode_vtbl =
     xmlnode_selectSingleNode,
     NULL,
     xmlnode_get_namespaceURI,
-    xmlnode_get_prefix,
+    NULL,
     xmlnode_get_baseName,
     xmlnode_transformNodeToObject,
 };
diff --git a/dlls/msxml3/pi.c b/dlls/msxml3/pi.c
index 5e3fd3a..2158c13 100644
--- a/dlls/msxml3/pi.c
+++ b/dlls/msxml3/pi.c
@@ -515,10 +515,11 @@ static HRESULT WINAPI dom_pi_get_namespaceURI(
 
 static HRESULT WINAPI dom_pi_get_prefix(
     IXMLDOMProcessingInstruction *iface,
-    BSTR* p)
+    BSTR* prefix)
 {
     dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
-    return IXMLDOMNode_get_prefix( IXMLDOMNode_from_impl(&This->node), p );
+    TRACE("(%p)->(%p)\n", This, prefix);
+    return return_null_bstr( prefix );
 }
 
 static HRESULT WINAPI dom_pi_get_baseName(
diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c
index f560694..fb5c4ac 100644
--- a/dlls/msxml3/tests/domdoc.c
+++ b/dlls/msxml3/tests/domdoc.c
@@ -7248,14 +7248,66 @@ static void test_createNode(void)
 
 static void test_get_prefix(void)
 {
-    IXMLDOMDocument *doc;
+    IXMLDOMDocumentFragment *fragment;
+    IXMLDOMCDATASection *cdata;
     IXMLDOMElement *element;
+    IXMLDOMComment *comment;
+    IXMLDOMDocument *doc;
     HRESULT hr;
     BSTR str;
 
     doc = create_document(&IID_IXMLDOMDocument);
     if (!doc) return;
 
+    /* nodes that can't support prefix */
+    /* 1. document */
+    str = (void*)0xdeadbeef;
+    hr = IXMLDOMDocument_get_prefix(doc, &str);
+    ok( hr == S_FALSE, "got 0x%08x\n", hr);
+    ok( str == 0, "got %p\n", str);
+
+    hr = IXMLDOMDocument_get_prefix(doc, NULL);
+    ok( hr == E_INVALIDARG, "got 0x%08x\n", hr);
+
+    /* 2. cdata */
+    hr = IXMLDOMDocument_createCDATASection(doc, NULL, &cdata);
+    ok(hr == S_OK, "got %08x\n", hr );
+
+    str = (void*)0xdeadbeef;
+    hr = IXMLDOMCDATASection_get_prefix(cdata, &str);
+    ok(hr == S_FALSE, "got %08x\n", hr);
+    ok( str == 0, "got %p\n", str);
+
+    hr = IXMLDOMCDATASection_get_prefix(cdata, NULL);
+    ok(hr == E_INVALIDARG, "got %08x\n", hr);
+    IXMLDOMCDATASection_Release(cdata);
+
+    /* 3. comment */
+    hr = IXMLDOMDocument_createComment(doc, NULL, &comment);
+    ok(hr == S_OK, "got %08x\n", hr );
+
+    str = (void*)0xdeadbeef;
+    hr = IXMLDOMComment_get_prefix(comment, &str);
+    ok(hr == S_FALSE, "got %08x\n", hr);
+    ok( str == 0, "got %p\n", str);
+
+    hr = IXMLDOMComment_get_prefix(comment, NULL);
+    ok(hr == E_INVALIDARG, "got %08x\n", hr);
+    IXMLDOMComment_Release(comment);
+
+    /* 4. fragment */
+    hr = IXMLDOMDocument_createDocumentFragment(doc, &fragment);
+    ok(hr == S_OK, "got %08x\n", hr );
+
+    str = (void*)0xdeadbeef;
+    hr = IXMLDOMDocumentFragment_get_prefix(fragment, &str);
+    ok(hr == S_FALSE, "got %08x\n", hr);
+    ok( str == 0, "got %p\n", str);
+
+    hr = IXMLDOMDocumentFragment_get_prefix(fragment, NULL);
+    ok(hr == E_INVALIDARG, "got %08x\n", hr);
+    IXMLDOMDocumentFragment_Release(fragment);
+
     /* no prefix */
     hr = IXMLDOMDocument_createElement(doc, _bstr_("elem"), &element);
     ok( hr == S_OK, "got 0x%08x\n", hr);
diff --git a/dlls/msxml3/text.c b/dlls/msxml3/text.c
index a55a515..0fd8b42 100644
--- a/dlls/msxml3/text.c
+++ b/dlls/msxml3/text.c
@@ -514,10 +514,11 @@ static HRESULT WINAPI domtext_get_namespaceURI(
 
 static HRESULT WINAPI domtext_get_prefix(
     IXMLDOMText *iface,
-    BSTR* p)
+    BSTR* prefix)
 {
     domtext *This = impl_from_IXMLDOMText( iface );
-    return IXMLDOMNode_get_prefix( IXMLDOMNode_from_impl(&This->node), p );
+    TRACE("(%p)->(%p)\n", This, prefix);
+    return return_null_bstr( prefix );
 }
 
 static HRESULT WINAPI domtext_get_baseName(
-- 
1.5.6.5



--------------070902090900000704090203--



More information about the wine-patches mailing list