Jacek Caban : mshtml: Moved IDispatchEx initialization to HTMLElement_Init.

Alexandre Julliard julliard at winehq.org
Thu May 1 06:38:38 CDT 2008


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed Apr 30 18:18:24 2008 +0200

mshtml: Moved IDispatchEx initialization to HTMLElement_Init.

---

 dlls/mshtml/htmlelem.c   |   10 +++++-----
 dlls/mshtml/htmlinput.c  |    3 +--
 dlls/mshtml/htmloption.c |    7 +++----
 3 files changed, 9 insertions(+), 11 deletions(-)

diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c
index f9b416a..f87bb44 100644
--- a/dlls/mshtml/htmlelem.c
+++ b/dlls/mshtml/htmlelem.c
@@ -1297,12 +1297,14 @@ static dispex_static_data_t HTMLElement_dispex = {
 
 void HTMLElement_Init(HTMLElement *This)
 {
-    This->node.vtbl = &HTMLElementImplVtbl;
     This->lpHTMLElementVtbl = &HTMLElementVtbl;
 
     ConnectionPointContainer_Init(&This->cp_container, (IUnknown*)HTMLELEM(This));
 
     HTMLElement2_Init(This);
+
+    if(!This->node.dispex.data)
+        init_dispex(&This->node.dispex, (IUnknown*)HTMLELEM(This), &HTMLElement_dispex);
 }
 
 HTMLElement *HTMLElement_Create(nsIDOMNode *nsnode)
@@ -1351,15 +1353,13 @@ HTMLElement *HTMLElement_Create(nsIDOMNode *nsnode)
     if(!ret) {
         ret = heap_alloc_zero(sizeof(HTMLElement));
         HTMLElement_Init(ret);
-    }
+        ret->node.vtbl = &HTMLElementImplVtbl;
+   }
 
     nsAString_Finish(&class_name_str);
 
     ret->nselem = nselem;
 
-    if(!ret->node.dispex.data)
-        init_dispex(&ret->node.dispex, (IUnknown*)HTMLELEM(ret), &HTMLElement_dispex);
-
     return ret;
 }
 
diff --git a/dlls/mshtml/htmlinput.c b/dlls/mshtml/htmlinput.c
index 3ba954f..c4f2750 100644
--- a/dlls/mshtml/htmlinput.c
+++ b/dlls/mshtml/htmlinput.c
@@ -1078,12 +1078,11 @@ HTMLElement *HTMLInputElement_Create(nsIDOMHTMLElement *nselem)
     HTMLInputElement *ret = heap_alloc_zero(sizeof(HTMLInputElement));
     nsresult nsres;
 
-    HTMLElement_Init(&ret->element);
-
     ret->lpHTMLInputElementVtbl = &HTMLInputElementVtbl;
     ret->element.node.vtbl = &HTMLInputElementImplVtbl;
 
     init_dispex(&ret->element.node.dispex, (IUnknown*)HTMLINPUT(ret), &HTMLInputElement_dispex);
+    HTMLElement_Init(&ret->element);
 
     nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLInputElement,
                                              (void**)&ret->nsinput);
diff --git a/dlls/mshtml/htmloption.c b/dlls/mshtml/htmloption.c
index a642295..0753810 100644
--- a/dlls/mshtml/htmloption.c
+++ b/dlls/mshtml/htmloption.c
@@ -350,17 +350,16 @@ HTMLElement *HTMLOptionElement_Create(nsIDOMHTMLElement *nselem)
     HTMLOptionElement *ret = heap_alloc_zero(sizeof(HTMLOptionElement));
     nsresult nsres;
 
-    HTMLElement_Init(&ret->element);
-
     ret->lpHTMLOptionElementVtbl = &HTMLOptionElementVtbl;
     ret->element.node.vtbl = &HTMLOptionElementImplVtbl;
 
+    HTMLElement_Init(&ret->element);
+    init_dispex(&ret->element.node.dispex, (IUnknown*)HTMLOPTION(ret), &HTMLOptionElement_dispex);
+
     nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLOptionElement, (void**)&ret->nsoption);
     if(NS_FAILED(nsres))
         ERR("Could not get nsIDOMHTMLOptionElement interface: %08x\n", nsres);
 
-    init_dispex(&ret->element.node.dispex, (IUnknown*)HTMLOPTION(ret), &HTMLOptionElement_dispex);
-
     return &ret->element;
 }
 




More information about the wine-cvs mailing list