Jacek Caban : mshtml: insert_adjacent_node clean up.
Alexandre Julliard
julliard at winehq.org
Fri Mar 1 12:42:24 CST 2013
Module: wine
Branch: master
Commit: 6d55379f7a98c9149d4ed072a8f654dd20c0f8c5
URL: http://source.winehq.org/git/wine.git/?a=commit;h=6d55379f7a98c9149d4ed072a8f654dd20c0f8c5
Author: Jacek Caban <jacek at codeweavers.com>
Date: Fri Mar 1 15:44:48 2013 +0100
mshtml: insert_adjacent_node clean up.
---
dlls/mshtml/htmlelem.c | 105 +++++++++++++++++++++++++-----------------------
1 files changed, 55 insertions(+), 50 deletions(-)
diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c
index 208493f..581669c 100644
--- a/dlls/mshtml/htmlelem.c
+++ b/dlls/mshtml/htmlelem.c
@@ -1087,68 +1087,74 @@ static HRESULT WINAPI HTMLElement_get_outerText(IHTMLElement *iface, BSTR *p)
return E_NOTIMPL;
}
-static HRESULT HTMLElement_InsertAdjacentNode(HTMLElement *This, BSTR where, nsIDOMNode *nsnode)
+static HRESULT insert_adjacent_node(HTMLElement *This, const WCHAR *where, nsIDOMNode *nsnode)
{
- static const WCHAR wszBeforeBegin[] = {'b','e','f','o','r','e','B','e','g','i','n',0};
- static const WCHAR wszAfterBegin[] = {'a','f','t','e','r','B','e','g','i','n',0};
- static const WCHAR wszBeforeEnd[] = {'b','e','f','o','r','e','E','n','d',0};
- static const WCHAR wszAfterEnd[] = {'a','f','t','e','r','E','n','d',0};
+ nsIDOMNode *ret_nsnode;
nsresult nsres;
+ HRESULT hres = S_OK;
- if (!strcmpiW(where, wszBeforeBegin))
- {
- nsIDOMNode *unused;
+ static const WCHAR beforebeginW[] = {'b','e','f','o','r','e','b','e','g','i','n',0};
+ static const WCHAR afterbeginW[] = {'a','f','t','e','r','b','e','g','i','n',0};
+ static const WCHAR beforeendW[] = {'b','e','f','o','r','e','e','n','d',0};
+ static const WCHAR afterendW[] = {'a','f','t','e','r','e','n','d',0};
+
+ if (!strcmpiW(where, beforebeginW)) {
nsIDOMNode *parent;
+
nsres = nsIDOMNode_GetParentNode(This->node.nsnode, &parent);
- if (!parent) return E_INVALIDARG;
- nsres = nsIDOMNode_InsertBefore(parent, nsnode, This->node.nsnode, &unused);
- if (unused) nsIDOMNode_Release(unused);
+ if(NS_FAILED(nsres))
+ return E_FAIL;
+
+ if(!parent)
+ return E_INVALIDARG;
+
+ nsres = nsIDOMNode_InsertBefore(parent, nsnode, This->node.nsnode, &ret_nsnode);
nsIDOMNode_Release(parent);
- }
- else if (!strcmpiW(where, wszAfterBegin))
- {
- nsIDOMNode *unused;
+ }else if(!strcmpiW(where, afterbeginW)) {
nsIDOMNode *first_child;
- nsIDOMNode_GetFirstChild(This->node.nsnode, &first_child);
- nsres = nsIDOMNode_InsertBefore(This->node.nsnode, nsnode, first_child, &unused);
- if (unused) nsIDOMNode_Release(unused);
- if (first_child) nsIDOMNode_Release(first_child);
- }
- else if (!strcmpiW(where, wszBeforeEnd))
- {
- nsIDOMNode *unused;
- nsres = nsIDOMNode_AppendChild(This->node.nsnode, nsnode, &unused);
- if (unused) nsIDOMNode_Release(unused);
- }
- else if (!strcmpiW(where, wszAfterEnd))
- {
- nsIDOMNode *unused;
- nsIDOMNode *next_sibling;
- nsIDOMNode *parent;
- nsIDOMNode_GetParentNode(This->node.nsnode, &parent);
- if (!parent) return E_INVALIDARG;
-
- nsIDOMNode_GetNextSibling(This->node.nsnode, &next_sibling);
- if (next_sibling)
- {
- nsres = nsIDOMNode_InsertBefore(parent, nsnode, next_sibling, &unused);
- nsIDOMNode_Release(next_sibling);
+
+ nsres = nsIDOMNode_GetFirstChild(This->node.nsnode, &first_child);
+ if(NS_FAILED(nsres))
+ return E_FAIL;
+
+ nsres = nsIDOMNode_InsertBefore(This->node.nsnode, nsnode, first_child, &ret_nsnode);
+ if(NS_FAILED(nsres))
+ return E_FAIL;
+
+ if (first_child)
+ nsIDOMNode_Release(first_child);
+ }else if (!strcmpiW(where, beforeendW)) {
+ nsres = nsIDOMNode_AppendChild(This->node.nsnode, nsnode, &ret_nsnode);
+ }else if (!strcmpiW(where, afterendW)) {
+ nsIDOMNode *next_sibling, *parent;
+
+ nsres = nsIDOMNode_GetParentNode(This->node.nsnode, &parent);
+ if(NS_FAILED(nsres))
+ return E_FAIL;
+ if(!parent)
+ return E_INVALIDARG;
+
+ nsres = nsIDOMNode_GetNextSibling(This->node.nsnode, &next_sibling);
+ if(NS_SUCCEEDED(nsres)) {
+ if(next_sibling) {
+ nsres = nsIDOMNode_InsertBefore(parent, nsnode, next_sibling, &ret_nsnode);
+ nsIDOMNode_Release(next_sibling);
+ }else {
+ nsres = nsIDOMNode_AppendChild(parent, nsnode, &ret_nsnode);
+ }
}
- else
- nsres = nsIDOMNode_AppendChild(parent, nsnode, &unused);
+
nsIDOMNode_Release(parent);
- if (unused) nsIDOMNode_Release(unused);
- }
- else
- {
+ }else {
ERR("invalid where: %s\n", debugstr_w(where));
return E_INVALIDARG;
}
if (NS_FAILED(nsres))
return E_FAIL;
- else
- return S_OK;
+
+ nsIDOMNode_Release(ret_nsnode);
+ return hres;
}
static HRESULT WINAPI HTMLElement_insertAdjacentHTML(IHTMLElement *iface, BSTR where,
@@ -1188,9 +1194,8 @@ static HRESULT WINAPI HTMLElement_insertAdjacentHTML(IHTMLElement *iface, BSTR w
return E_FAIL;
}
- hr = HTMLElement_InsertAdjacentNode(This, where, nsnode);
+ hr = insert_adjacent_node(This, where, nsnode);
nsIDOMNode_Release(nsnode);
-
return hr;
}
@@ -1221,7 +1226,7 @@ static HRESULT WINAPI HTMLElement_insertAdjacentText(IHTMLElement *iface, BSTR w
return E_FAIL;
}
- hr = HTMLElement_InsertAdjacentNode(This, where, nsnode);
+ hr = insert_adjacent_node(This, where, nsnode);
nsIDOMNode_Release(nsnode);
return hr;
More information about the wine-cvs
mailing list