Jacek Caban : mshtml: Use stored nsdoc in IHTMLDocument2::get_body.

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


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

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

mshtml: Use stored nsdoc in IHTMLDocument2::get_body.

---

 dlls/mshtml/htmldoc.c |   38 +++++++++++++-------------------------
 1 files changed, 13 insertions(+), 25 deletions(-)

diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c
index 57a9cfd..c5bcdb9 100644
--- a/dlls/mshtml/htmldoc.c
+++ b/dlls/mshtml/htmldoc.c
@@ -294,43 +294,31 @@ static HRESULT WINAPI HTMLDocument_get_all(IHTMLDocument2 *iface, IHTMLElementCo
 static HRESULT WINAPI HTMLDocument_get_body(IHTMLDocument2 *iface, IHTMLElement **p)
 {
     HTMLDocument *This = HTMLDOC_THIS(iface);
-    nsIDOMDocument *nsdoc;
-    nsIDOMHTMLDocument *nshtmldoc;
     nsIDOMHTMLElement *nsbody = NULL;
     HTMLDOMNode *node;
     nsresult nsres;
 
     TRACE("(%p)->(%p)\n", This, p);
 
-    *p = NULL;
-
-    if(!This->nscontainer)
-        return S_OK;
-
-    nsres = nsIWebNavigation_GetDocument(This->nscontainer->navigation, &nsdoc);
-    if(NS_FAILED(nsres)) {
-        ERR("GetDocument failed: %08x\n", nsres);
-        return S_OK;
+    if(!This->nsdoc) {
+        WARN("NULL nsdoc\n");
+        return E_UNEXPECTED;
     }
 
-    if(NS_FAILED(nsres) || !nsdoc) 
-        return S_OK;
-
-    nsIDOMDocument_QueryInterface(nsdoc, &IID_nsIDOMHTMLDocument, (void**)&nshtmldoc);
-    nsIDOMDocument_Release(nsdoc);
-
-    nsres = nsIDOMHTMLDocument_GetBody(nshtmldoc, &nsbody);
-    nsIDOMHTMLDocument_Release(nshtmldoc);
-
-    if(NS_FAILED(nsres) || !nsbody) {
+    nsres = nsIDOMHTMLDocument_GetBody(This->nsdoc, &nsbody);
+    if(NS_FAILED(nsres)) {
         TRACE("Could not get body: %08x\n", nsres);
-        return S_OK;
+        return E_UNEXPECTED;
     }
 
-    node = get_node(This, (nsIDOMNode*)nsbody, TRUE);
-    nsIDOMHTMLElement_Release(nsbody);
+    if(nsbody) {
+        node = get_node(This, (nsIDOMNode*)nsbody, TRUE);
+        nsIDOMHTMLElement_Release(nsbody);
 
-    IHTMLDOMNode_QueryInterface(HTMLDOMNODE(node), &IID_IHTMLElement, (void**)p);
+        IHTMLDOMNode_QueryInterface(HTMLDOMNODE(node), &IID_IHTMLElement, (void**)p);
+    }else {
+        *p = NULL;
+    }
 
     TRACE("*p = %p\n", *p);
     return S_OK;




More information about the wine-cvs mailing list