Jacek Caban : mshtml: Share nsframe and nsiframe references with nsnode.

Alexandre Julliard julliard at winehq.org
Wed Jun 27 19:13:59 CDT 2012


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed Jun 27 10:56:14 2012 +0200

mshtml: Share nsframe and nsiframe references with nsnode.

---

 dlls/mshtml/htmlframebase.c |   17 +++++++++--------
 1 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/dlls/mshtml/htmlframebase.c b/dlls/mshtml/htmlframebase.c
index b06534e..a5344ec 100644
--- a/dlls/mshtml/htmlframebase.c
+++ b/dlls/mshtml/htmlframebase.c
@@ -17,6 +17,7 @@
  */
 
 #include <stdarg.h>
+#include <assert.h>
 
 #define COBJMACROS
 
@@ -522,11 +523,6 @@ void HTMLFrameBase_destructor(HTMLFrameBase *This)
     if(This->content_window)
         This->content_window->frame_element = NULL;
 
-    if(This->nsframe)
-        nsIDOMHTMLFrameElement_Release(This->nsframe);
-    if(This->nsiframe)
-        nsIDOMHTMLIFrameElement_Release(This->nsiframe);
-
     HTMLElement_destructor(&This->element.node);
 }
 
@@ -542,9 +538,14 @@ void HTMLFrameBase_Init(HTMLFrameBase *This, HTMLDocumentNode *doc, nsIDOMHTMLEl
 
     nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLFrameElement, (void**)&This->nsframe);
     if(NS_FAILED(nsres)) {
+        This->nsframe = NULL;
         nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLIFrameElement, (void**)&This->nsiframe);
-        if(NS_FAILED(nsres))
-            ERR("Could not get nsIDOMHTML[I]Frame interface\n");
-    }else
+        assert(nsres == NS_OK && (nsIDOMNode*)This->nsiframe == This->element.node.nsnode);
+    }else {
+        assert((nsIDOMNode*)This->nsframe == This->element.node.nsnode);
         This->nsiframe = NULL;
+    }
+
+    /* Share the reference with nsnode */
+    nsIDOMNode_Release(This->element.node.nsnode);
 }




More information about the wine-cvs mailing list