Jacek Caban : mshtml: Use stored nsdoc in IHTMLDocument3::getElementById.

Alexandre Julliard julliard at winehq.org
Thu Oct 9 07:42:52 CDT 2008


Module: wine
Branch: master
Commit: f1ff6b0993d81aa1296f8f55ba9b7f3c2d743e92
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=f1ff6b0993d81aa1296f8f55ba9b7f3c2d743e92

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed Oct  8 13:29:56 2008 -0500

mshtml: Use stored nsdoc in IHTMLDocument3::getElementById.

---

 dlls/mshtml/htmldoc3.c |   35 +++++++++++++++++------------------
 1 files changed, 17 insertions(+), 18 deletions(-)

diff --git a/dlls/mshtml/htmldoc3.c b/dlls/mshtml/htmldoc3.c
index d636834..b0efb7c 100644
--- a/dlls/mshtml/htmldoc3.c
+++ b/dlls/mshtml/htmldoc3.c
@@ -421,37 +421,36 @@ static HRESULT WINAPI HTMLDocument3_getElementById(IHTMLDocument3 *iface, BSTR v
                                                    IHTMLElement **pel)
 {
     HTMLDocument *This = HTMLDOC3_THIS(iface);
-    nsIDOMDocument *nsdoc = NULL;
-    nsIDOMElement *nselem = NULL;
+    nsIDOMElement *nselem;
     HTMLDOMNode *node;
     nsAString id_str;
     nsresult nsres;
 
     TRACE("(%p)->(%s %p)\n", This, debugstr_w(v), pel);
 
-    *pel = NULL;
-
-    if(!This->nscontainer)
-        return S_OK;
-
-    nsres = nsIWebNavigation_GetDocument(This->nscontainer->navigation, &nsdoc);
-    if(NS_FAILED(nsres) || !nsdoc)
-        return S_OK;
+    if(!This->nsdoc) {
+        WARN("NULL nsdoc\n");
+        return E_UNEXPECTED;
+    }
 
     nsAString_Init(&id_str, v);
-    nsIDOMDocument_GetElementById(nsdoc, &id_str, &nselem);
-    nsIDOMDocument_Release(nsdoc);
+    nsres = nsIDOMHTMLDocument_GetElementById(This->nsdoc, &id_str, &nselem);
     nsAString_Finish(&id_str);
+    if(FAILED(nsres)) {
+        ERR("GetElementById failed: %08x\n", nsres);
+        return E_FAIL;
+    }
+
+    if(nselem) {
+        node = get_node(This, (nsIDOMNode*)nselem, TRUE);
+        nsIDOMElement_Release(nselem);
 
-    if(!nselem) {
+        IHTMLDOMNode_QueryInterface(HTMLDOMNODE(node), &IID_IHTMLElement, (void**)pel);
+    }else {
         *pel = NULL;
-        return S_OK;
     }
 
-    node = get_node(This, (nsIDOMNode*)nselem, TRUE);
-    nsIDOMElement_Release(nselem);
-
-    return IHTMLDOMNode_QueryInterface(HTMLDOMNODE(node), &IID_IHTMLElement, (void**)pel);
+    return S_OK;
 }
 
 




More information about the wine-cvs mailing list