From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/htmlevent.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c index bcde9f38bba..bccdfb81121 100644 --- a/dlls/mshtml/htmlevent.c +++ b/dlls/mshtml/htmlevent.c @@ -3253,6 +3253,7 @@ HRESULT create_document_event(HTMLDocumentNode *doc, eventid_t event_id, DOMEven }
event = alloc_event(nsevent, doc->document_mode, event_info[event_id].type, event_id); + nsIDOMEvent_Release(nsevent); if(!event) return E_OUTOFMEMORY;
From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/script.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/dlls/mshtml/script.c b/dlls/mshtml/script.c index 0e2241663dc..0cd79b45405 100644 --- a/dlls/mshtml/script.c +++ b/dlls/mshtml/script.c @@ -1654,6 +1654,7 @@ void bind_event_scripts(HTMLDocumentNode *doc) nsIDOMNode_Release(script_node);
hres = script_elem_from_nsscript(nsscript, &script_elem); + nsIDOMHTMLScriptElement_Release(nsscript); if(FAILED(hres)) continue;
From: Gabriel Ivăncescu gabrielopcode@gmail.com
This simplifies the code and CC graph, like it's done for e.g. elements.
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/htmldoc.c | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c index f3a370848da..1669b4c518b 100644 --- a/dlls/mshtml/htmldoc.c +++ b/dlls/mshtml/htmldoc.c @@ -5860,26 +5860,15 @@ static HRESULT HTMLDocumentNode_clone(HTMLDOMNode *iface, nsIDOMNode *nsnode, HT return E_NOTIMPL; }
-static void HTMLDocumentNode_traverse(HTMLDOMNode *iface, nsCycleCollectionTraversalCallback *cb) -{ - HTMLDocumentNode *This = impl_from_HTMLDOMNode(iface); - - if(This->dom_document) - note_cc_edge((nsISupports*)This->dom_document, "This->dom_document", cb); -} - static void HTMLDocumentNode_unlink(HTMLDOMNode *iface) { HTMLDocumentNode *This = impl_from_HTMLDOMNode(iface);
if(This->dom_document) { - nsIDOMDocument *dom_document = This->dom_document; - release_document_mutation(This); detach_document_node(This); This->dom_document = NULL; This->html_document = NULL; - nsIDOMDocument_Release(dom_document); This->window = NULL; } } @@ -5902,7 +5891,7 @@ static const NodeImplVtbl HTMLDocumentNodeImplVtbl = { NULL, NULL, NULL, - HTMLDocumentNode_traverse, + NULL, HTMLDocumentNode_unlink };
@@ -6272,10 +6261,11 @@ HRESULT create_document_node(nsIDOMDocument *nsdoc, GeckoBrowser *browser, HTMLI if(!doc_obj->window || (window && is_main_content_window(window->base.outer_window))) doc->cp_container.forward_container = &doc_obj->cp_container;
- if(NS_SUCCEEDED(nsIDOMDocument_QueryInterface(nsdoc, &IID_nsIDOMHTMLDocument, (void**)&doc->html_document))) + /* Share reference with HTMLDOMNode */ + if(NS_SUCCEEDED(nsIDOMDocument_QueryInterface(nsdoc, &IID_nsIDOMHTMLDocument, (void**)&doc->html_document))) { doc->dom_document = (nsIDOMDocument*)doc->html_document; - else { - nsIDOMDocument_AddRef(nsdoc); + nsIDOMHTMLDocument_Release(doc->html_document); + }else { doc->dom_document = nsdoc; doc->html_document = NULL; }
From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/persist.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/dlls/mshtml/persist.c b/dlls/mshtml/persist.c index 78e8f609187..b1ec172f912 100644 --- a/dlls/mshtml/persist.c +++ b/dlls/mshtml/persist.c @@ -378,20 +378,22 @@ HRESULT set_moniker(HTMLOuterWindow *window, IMoniker *mon, IUri *nav_uri, IBind hres = create_doc_uri(uri, &nsuri); if(!nav_uri) IUri_Release(uri); - if(SUCCEEDED(hres)) { - if(async_bsc) - bscallback = async_bsc; - else - hres = create_channelbsc(mon, NULL, NULL, 0, TRUE, &bscallback); + if(FAILED(hres)) { + CoTaskMemFree(url); + return hres; }
+ if(async_bsc) + bscallback = async_bsc; + else + hres = create_channelbsc(mon, NULL, NULL, 0, TRUE, &bscallback); + if(SUCCEEDED(hres)) { if(window->base.inner_window->doc) remove_target_tasks(window->base.inner_window->task_magic); abort_window_bindings(window->base.inner_window);
hres = load_nsuri(window, nsuri, NULL, bscallback, LOAD_FLAGS_BYPASS_CACHE); - nsISupports_Release((nsISupports*)nsuri); /* FIXME */ if(SUCCEEDED(hres)) { hres = create_pending_window(window, bscallback); TRACE("pending window for %p %p %p\n", window, bscallback, window->pending_window); @@ -399,6 +401,7 @@ HRESULT set_moniker(HTMLOuterWindow *window, IMoniker *mon, IUri *nav_uri, IBind if(bscallback != async_bsc) IBindStatusCallback_Release(&bscallback->bsc.IBindStatusCallback_iface); } + nsISupports_Release((nsISupports*)nsuri); /* FIXME */
if(FAILED(hres)) { CoTaskMemFree(url);
From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/mutation.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/dlls/mshtml/mutation.c b/dlls/mshtml/mutation.c index 89bba9cb195..7f2d92b4bcc 100644 --- a/dlls/mshtml/mutation.c +++ b/dlls/mshtml/mutation.c @@ -352,8 +352,11 @@ static nsresult run_insert_script(HTMLDocumentNode *doc, nsISupports *script_ifa
hres = script_elem_from_nsscript(nsscript, &script_elem); nsIDOMHTMLScriptElement_Release(nsscript); - if(FAILED(hres)) + if(FAILED(hres)) { + if(nsparser) + nsIParser_Release(nsparser); return NS_ERROR_FAILURE; + }
if(nsparser) { nsIParser_BeginEvaluatingParserInsertedScript(nsparser);
This merge request was approved by Jacek Caban.