Jacek Caban : mshtml: Keep reference to document node in onload event handler.
Alexandre Julliard
julliard at winehq.org
Wed May 15 14:20:00 CDT 2013
Module: wine
Branch: master
Commit: 503032749b0b9091dfbde69385888bc39d733672
URL: http://source.winehq.org/git/wine.git/?a=commit;h=503032749b0b9091dfbde69385888bc39d733672
Author: Jacek Caban <jacek at codeweavers.com>
Date: Wed May 15 12:52:52 2013 +0200
mshtml: Keep reference to document node in onload event handler.
---
dlls/mshtml/nsevents.c | 22 +++++++++++++---------
1 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/dlls/mshtml/nsevents.c b/dlls/mshtml/nsevents.c
index 297ef8c..fc6504b 100644
--- a/dlls/mshtml/nsevents.c
+++ b/dlls/mshtml/nsevents.c
@@ -235,6 +235,7 @@ static nsresult NSAPI handle_load(nsIDOMEventListener *iface, nsIDOMEvent *event
HTMLDocumentNode *doc = This->This->doc;
nsIDOMHTMLElement *nsbody = NULL;
HTMLDocumentObj *doc_obj = NULL;
+ nsresult nsres = NS_OK;
TRACE("(%p)\n", doc);
@@ -245,6 +246,8 @@ static nsresult NSAPI handle_load(nsIDOMEventListener *iface, nsIDOMEvent *event
connect_scripts(doc->window);
+ htmldoc_addref(&doc->basedoc);
+
if(doc_obj)
handle_docobj_load(doc_obj);
@@ -264,18 +267,19 @@ static nsresult NSAPI handle_load(nsIDOMEventListener *iface, nsIDOMEvent *event
IDocObjectService_FireDocumentComplete(doc_obj->doc_object_service,
&doc->basedoc.window->base.IHTMLWindow2_iface, 0);
- if(!doc->nsdoc) {
+ if(doc->nsdoc) {
+ nsIDOMHTMLDocument_GetBody(doc->nsdoc, &nsbody);
+ if(nsbody) {
+ fire_event(doc, EVENTID_LOAD, TRUE, (nsIDOMNode*)nsbody, event, (IDispatch*)&doc->window->base.IDispatchEx_iface);
+ nsIDOMHTMLElement_Release(nsbody);
+ }
+ }else {
ERR("NULL nsdoc\n");
- return NS_ERROR_FAILURE;
+ nsres = NS_ERROR_FAILURE;
}
- nsIDOMHTMLDocument_GetBody(doc->nsdoc, &nsbody);
- if(nsbody) {
- fire_event(doc, EVENTID_LOAD, TRUE, (nsIDOMNode*)nsbody, event, (IDispatch*)&doc->window->base.IDispatchEx_iface);
- nsIDOMHTMLElement_Release(nsbody);
- }
-
- return NS_OK;
+ htmldoc_release(&doc->basedoc);
+ return nsres;
}
static nsresult NSAPI handle_htmlevent(nsIDOMEventListener *iface, nsIDOMEvent *event)
More information about the wine-cvs
mailing list