Module: wine Branch: refs/heads/master Commit: 417c10476041079a20143314de5c49bdf2e4dafe URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=417c10476041079a20143314...
Author: Jacek Caban jacek@codeweavers.com Date: Sat Apr 8 19:49:55 2006 +0200
mshtml: Fix ref counting.
- Fix ref counting. - Use This->window instead of QI in NSContainer_Release.
---
dlls/mshtml/nsembed.c | 18 ++++++------------ dlls/mshtml/nsio.c | 4 ++-- 2 files changed, 8 insertions(+), 14 deletions(-)
diff --git a/dlls/mshtml/nsembed.c b/dlls/mshtml/nsembed.c index a64f6a5..ddd030a 100644 --- a/dlls/mshtml/nsembed.c +++ b/dlls/mshtml/nsembed.c @@ -1115,6 +1115,7 @@ static nsresult NSAPI nsSupportsWeakRefe
TRACE("(%p)->(%p)\n", This, _retval);
+ nsIWeakReference_AddRef(NSWEAKREF(This)); *_retval = NSWEAKREF(This); return NS_OK; } @@ -1230,23 +1231,13 @@ NSContainer *NSContainer_Create(HTMLDocu
void NSContainer_Release(NSContainer *This) { - nsIBaseWindow *base_window; - nsresult nsres; - TRACE("(%p)\n", This);
ShowWindow(This->hwnd, SW_HIDE); SetParent(This->hwnd, NULL);
- nsres = nsIWebBrowser_QueryInterface(This->webbrowser, &IID_nsIBaseWindow, - (void**)&base_window); - if(NS_SUCCEEDED(nsres)) { - nsIBaseWindow_SetVisibility(base_window, FALSE); - nsIBaseWindow_Destroy(base_window); - nsIBaseWindow_Release(base_window); - }else { - ERR("Could not get nsIBaseWindow interface: %08lx\n", nsres); - } + nsIBaseWindow_SetVisibility(This->window, FALSE); + nsIBaseWindow_Destroy(This->window);
nsIWebBrowser_SetContainerWindow(This->webbrowser, NULL);
@@ -1259,6 +1250,9 @@ void NSContainer_Release(NSContainer *Th nsIBaseWindow_Release(This->window); This->window = NULL;
+ nsIWebBrowserFocus_Release(This->focus); + This->focus = NULL; + if(This->stream) { nsIWebBrowserStream_Release(This->stream); This->stream = NULL; diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c index 51b3160..8af0bf5 100644 --- a/dlls/mshtml/nsio.c +++ b/dlls/mshtml/nsio.c @@ -131,14 +131,13 @@ static BOOL handle_uri(NSContainer *cont
hres = IServiceProvider_QueryService(service_provider, &IID_IHlinkFrame, &IID_IHlinkFrame, (void**)&hlink_frame); + IServiceProvider_Release(service_provider); if(SUCCEEDED(hres)) { hlink_frame_navigate(doc, hlink_frame, uri, channel->post_data_stream, hlnf); IHlinkFrame_Release(hlink_frame);
return FALSE; } - - IServiceProvider_Release(service_provider); }
return TRUE; @@ -618,6 +617,7 @@ static nsresult NSAPI nsChannel_AsyncOpe
nsres = nsIUploadChannel_SetUploadStream(upload_channel, This->post_data_stream, &empty_string, -1); + nsIUploadChannel_Release(upload_channel); if(NS_FAILED(nsres)) WARN("SetUploadStream failed: %08lx\n", nsres);