Rob Shearman : mshtml: Add some error handling to
hlink_frame_navigate.
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Jun 12 06:30:56 CDT 2007
Module: wine
Branch: master
Commit: 2211b6e5d0a31dfea39e27335eed5bb63cb16c25
URL: http://source.winehq.org/git/wine.git/?a=commit;h=2211b6e5d0a31dfea39e27335eed5bb63cb16c25
Author: Rob Shearman <rob at codeweavers.com>
Date: Tue Jun 12 10:09:44 2007 +0100
mshtml: Add some error handling to hlink_frame_navigate.
---
dlls/mshtml/navigate.c | 32 ++++++++++++++++++++++----------
1 files changed, 22 insertions(+), 10 deletions(-)
diff --git a/dlls/mshtml/navigate.c b/dlls/mshtml/navigate.c
index 2303baf..459cc63 100644
--- a/dlls/mshtml/navigate.c
+++ b/dlls/mshtml/navigate.c
@@ -744,6 +744,7 @@ void hlink_frame_navigate(HTMLDocument *doc, IHlinkFrame *hlink_frame,
IBindCtx *bindctx;
IMoniker *mon;
IHlink *hlink;
+ HRESULT hr;
callback = create_bscallback(NULL);
@@ -754,24 +755,35 @@ void hlink_frame_navigate(HTMLDocument *doc, IHlinkFrame *hlink_frame,
debugstr_an(callback->post_data, callback->post_data_len));
}
- CreateAsyncBindCtx(0, STATUSCLB(callback), NULL, &bindctx);
+ hr = CreateAsyncBindCtx(0, STATUSCLB(callback), NULL, &bindctx);
+ if (FAILED(hr)) {
+ IBindStatusCallback_Release(STATUSCLB(callback));
+ return;
+ }
hlink = Hlink_Create();
+ if (!hlink) {
+ IBindCtx_Release(bindctx);
+ IBindStatusCallback_Release(STATUSCLB(callback));
+ return;
+ }
- CreateURLMoniker(NULL, uri, &mon);
- IHlink_SetMonikerReference(hlink, 0, mon, NULL);
+ hr = CreateURLMoniker(NULL, uri, &mon);
+ if (SUCCEEDED(hr)) {
+ IHlink_SetMonikerReference(hlink, 0, mon, NULL);
- if(hlnf & HLNF_OPENINNEWWINDOW) {
- static const WCHAR wszBlank[] = {'_','b','l','a','n','k',0};
- IHlink_SetTargetFrameName(hlink, wszBlank); /* FIXME */
- }
+ if(hlnf & HLNF_OPENINNEWWINDOW) {
+ static const WCHAR wszBlank[] = {'_','b','l','a','n','k',0};
+ IHlink_SetTargetFrameName(hlink, wszBlank); /* FIXME */
+ }
+
+ IHlinkFrame_Navigate(hlink_frame, hlnf, bindctx, STATUSCLB(callback), hlink);
- IHlinkFrame_Navigate(hlink_frame, hlnf, bindctx, STATUSCLB(callback), hlink);
+ IMoniker_Release(mon);
+ }
IBindCtx_Release(bindctx);
IBindStatusCallback_Release(STATUSCLB(callback));
- IMoniker_Release(mon);
-
}
HRESULT start_binding(BSCallback *bscallback)
More information about the wine-cvs
mailing list