Module: wine Branch: master Commit: f46ee92d906063c5d28bb45812553d989e924a69 URL: http://source.winehq.org/git/wine.git/?a=commit;h=f46ee92d906063c5d28bb45812...
Author: Jacek Caban jacek@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; }