From: Gabriel Ivăncescu gabrielopcode@gmail.com
Mostly by ignoring it, since no such Uri component exists.
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/navigate.c | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-)
diff --git a/dlls/mshtml/navigate.c b/dlls/mshtml/navigate.c index ef764bde58c..a2321fcb587 100644 --- a/dlls/mshtml/navigate.c +++ b/dlls/mshtml/navigate.c @@ -1677,9 +1677,11 @@ static void handle_extern_mime_navigation(nsChannelBSC *This) hres = IUnknown_QueryInterface(doc_obj->webbrowser, &IID_IWebBrowserPriv, (void**)&webbrowser_priv_old); if(SUCCEEDED(hres)) { V_VT(&uriv) = VT_BSTR; - IUri_GetDisplayUri(uri, &V_BSTR(&uriv)); + V_BSTR(&uriv) = NULL; + hres = IUri_GetDisplayUri(uri, &V_BSTR(&uriv));
- hres = IWebBrowserPriv_NavigateWithBindCtx(webbrowser_priv_old, &uriv, &flags, NULL, NULL, NULL, bind_ctx, NULL); + if(hres == S_OK) + hres = IWebBrowserPriv_NavigateWithBindCtx(webbrowser_priv_old, &uriv, &flags, NULL, NULL, NULL, bind_ctx, NULL);
SysFreeString(V_BSTR(&uriv)); IWebBrowserPriv_Release(webbrowser_priv_old); @@ -2031,15 +2033,17 @@ static void navigate_javascript_proc(task_t *_task) { navigate_javascript_task_t *task = (navigate_javascript_task_t*)_task; HTMLOuterWindow *window = task->window; + BSTR code = NULL; VARIANT v; - BSTR code; HRESULT hres;
task->window->readystate = READYSTATE_COMPLETE;
hres = IUri_GetPath(task->uri, &code); - if(FAILED(hres)) + if(hres != S_OK) { + SysFreeString(code); return; + }
hres = UrlUnescapeW(code, NULL, NULL, URL_UNESCAPE_INPLACE); if(FAILED(hres)) { @@ -2107,8 +2111,8 @@ static HRESULT navigate_fragment(HTMLOuterWindow *window, IUri *uri) { nsIDOMLocation *nslocation; nsAString nsfrag_str; + BSTR frag = NULL; WCHAR *selector; - BSTR frag; nsresult nsres; HRESULT hres; static const WCHAR selector_formatW[] = L"a[id="%s"]"; @@ -2120,9 +2124,10 @@ static HRESULT navigate_fragment(HTMLOuterWindow *window, IUri *uri) return E_FAIL;
hres = IUri_GetFragment(uri, &frag); - if(FAILED(hres)) { + if(hres != S_OK) { + SysFreeString(frag); nsIDOMLocation_Release(nslocation); - return hres; + return FAILED(hres) ? hres : S_OK; }
nsAString_InitDepend(&nsfrag_str, frag); @@ -2188,11 +2193,13 @@ HRESULT super_navigate(HTMLOuterWindow *window, IUri *uri, DWORD flags, const WC
hres = IOleClientSite_QueryInterface(window->browser->doc->client, &IID_IOleCommandTarget, (void**)&cmdtrg); if(SUCCEEDED(hres)) { + BSTR url_str = NULL; VARIANT in, out; - BSTR url_str;
hres = IUri_GetDisplayUri(uri_nofrag, &url_str); - if(SUCCEEDED(hres)) { + if(hres != S_OK) + SysFreeString(url_str); + else { V_VT(&in) = VT_BSTR; V_BSTR(&in) = url_str; V_VT(&out) = VT_BOOL; @@ -2234,7 +2241,7 @@ HRESULT super_navigate(HTMLOuterWindow *window, IUri *uri, DWORD flags, const WC prepare_for_binding(&window->browser->doc->basedoc, mon, flags);
hres = IUri_GetScheme(uri, &scheme); - if(SUCCEEDED(hres) && scheme == URL_SCHEME_JAVASCRIPT) { + if(hres == S_OK && scheme == URL_SCHEME_JAVASCRIPT) { navigate_javascript_task_t *task;
IBindStatusCallback_Release(&bsc->bsc.IBindStatusCallback_iface); @@ -2318,8 +2325,8 @@ HRESULT navigate_new_window(HTMLOuterWindow *window, IUri *uri, const WCHAR *nam return hres; }
- hres = INewWindowManager_EvaluateNewWindow(new_window_mgr, display_uri, name, context_url, - NULL, FALSE, window->browser->doc->has_popup ? 0 : NWMF_FIRST, 0); + hres = INewWindowManager_EvaluateNewWindow(new_window_mgr, display_uri ? display_uri : L"", name, + context_url ? context_url : L"", NULL, FALSE, window->browser->doc->has_popup ? 0 : NWMF_FIRST, 0); window->browser->doc->has_popup = TRUE; SysFreeString(display_uri); SysFreeString(context_url); @@ -2508,8 +2515,10 @@ HRESULT load_uri(HTMLOuterWindow *window, IUri *uri, DWORD flags) hres = IUri_GetDisplayUri(uri, &display_uri); if(FAILED(hres)) return hres; - - hres = navigate_uri(window, uri, display_uri, NULL, flags); + if(hres != S_OK) + hres = S_OK; + else + hres = navigate_uri(window, uri, display_uri, NULL, flags); SysFreeString(display_uri); return hres; } @@ -2524,7 +2533,7 @@ static HRESULT translate_uri(HTMLOuterWindow *window, IUri *orig_uri, BSTR *ret_ if(FAILED(hres)) return hres;
- if(window->browser->doc->hostui) { + if(hres == S_OK && window->browser->doc->hostui) { OLECHAR *translated_url = NULL;
hres = IDocHostUIHandler_TranslateUrl(window->browser->doc->hostui, 0, display_uri,