Jacek Caban : ieframe: Keep reference to This in all IDocObjectService callback calls.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed Feb 11 10:28:10 CST 2015
Module: wine
Branch: master
Commit: f46ee92d906063c5d28bb45812553d989e924a69
URL: http://source.winehq.org/git/wine.git/?a=commit;h=f46ee92d906063c5d28bb45812553d989e924a69
Author: Jacek Caban <jacek at codeweavers.com>
Date: Wed Feb 11 13:05:54 2015 +0100
ieframe: Keep reference to This in all IDocObjectService callback calls.
---
dlls/ieframe/shellbrowser.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/dlls/ieframe/shellbrowser.c b/dlls/ieframe/shellbrowser.c
index 216d3f4..51316b4 100644
--- a/dlls/ieframe/shellbrowser.c
+++ b/dlls/ieframe/shellbrowser.c
@@ -708,10 +708,15 @@ static HRESULT WINAPI DocObjectService_FireBeforeNavigate2(
V_VT(params+6) = (VT_DISPATCH);
V_DISPATCH(params+6) = (IDispatch*)This->doc_host->wb;
+ /* Keep reference to This. It may be released in event handler. */
+ IShellBrowser_AddRef(&This->IShellBrowser_iface);
+
TRACE(">>>\n");
call_sink(This->doc_host->cps.wbe2, DISPID_BEFORENAVIGATE2, &dp);
TRACE("<<<\n");
+ IShellBrowser_Release(&This->IShellBrowser_iface);
+
SysFreeString(V_BSTR(&var_url));
SysFreeString(V_BSTR(&var_headers));
SysFreeString(V_BSTR(&var_frame_name));
@@ -764,6 +769,9 @@ static HRESULT WINAPI DocObjectService_FireNavigateComplete2(
V_VT(&url_var) = VT_BSTR;
V_BSTR(&url_var) = url;
+ /* Keep reference to This. It may be released in event handler. */
+ IShellBrowser_AddRef(&This->IShellBrowser_iface);
+
TRACE(">>>\n");
call_sink(This->doc_host->cps.wbe2, DISPID_NAVIGATECOMPLETE2, &dp);
TRACE("<<<\n");
@@ -771,6 +779,7 @@ static HRESULT WINAPI DocObjectService_FireNavigateComplete2(
SysFreeString(url);
This->doc_host->busy = VARIANT_FALSE;
+ IShellBrowser_Release(&This->IShellBrowser_iface);
return S_OK;
}
More information about the wine-cvs
mailing list