Jacek Caban : mshtml: Don' t dispatch load event if document is already detached from its window.

Alexandre Julliard julliard at winehq.org
Tue Jan 2 13:19:02 CST 2018


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue Jan  2 15:07:07 2018 +0100

mshtml: Don't dispatch load event if document is already detached from its window.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/mshtml/nsevents.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/dlls/mshtml/nsevents.c b/dlls/mshtml/nsevents.c
index f0819d6..afe09fb 100644
--- a/dlls/mshtml/nsevents.c
+++ b/dlls/mshtml/nsevents.c
@@ -234,7 +234,8 @@ static nsresult NSAPI handle_load(nsIDOMEventListener *iface, nsIDOMEvent *event
     nsEventListener *This = impl_from_nsIDOMEventListener(iface);
     HTMLDocumentNode *doc = This->This->doc;
     HTMLDocumentObj *doc_obj = NULL;
-    nsresult nsres = NS_OK;
+    DOMEvent *load_event;
+    HRESULT hres;
 
     TRACE("(%p)\n", doc);
 
@@ -267,27 +268,27 @@ static nsresult NSAPI handle_load(nsIDOMEventListener *iface, nsIDOMEvent *event
                 &doc->basedoc.window->base.IHTMLWindow2_iface, 0);
 
     if(doc->nsdoc) {
-        DOMEvent *load_event;
-        HRESULT hres;
-
         hres = create_document_event(doc, EVENTID_LOAD, &load_event);
         if(SUCCEEDED(hres)) {
             dispatch_event(&doc->node.event_target, load_event);
             IDOMEvent_Release(&load_event->IDOMEvent_iface);
         }
+    }else {
+        WARN("no nsdoc\n");
+    }
 
+    if(doc->window) {
         hres = create_event_from_nsevent(event, &load_event);
         if(SUCCEEDED(hres)) {
             dispatch_event(&doc->window->event_target, load_event);
             IDOMEvent_Release(&load_event->IDOMEvent_iface);
         }
     }else {
-        ERR("NULL nsdoc\n");
-        nsres = NS_ERROR_FAILURE;
+        WARN("no window\n");
     }
 
     htmldoc_release(&doc->basedoc);
-    return nsres;
+    return NS_OK;
 }
 
 static nsresult NSAPI handle_htmlevent(nsIDOMEventListener *iface, nsIDOMEvent *nsevent)




More information about the wine-cvs mailing list