diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c index fbfde61e1a6..80d564970c3 100644 --- a/dlls/mshtml/nsio.c +++ b/dlls/mshtml/nsio.c @@ -1971,25 +1971,28 @@ static nsresult NSAPI nsURI_SetPath(nsIURL *iface, const nsACString *aPath) static nsresult NSAPI nsURI_Equals(nsIURL *iface, nsIURI *other, PRBool *_retval) { nsWineURI *This = NSURI_THIS(iface); - nsWineURI *wine_uri; + nsWineURI *other_obj; nsresult nsres; + HRESULT hres; TRACE("(%p)->(%p %p)\n", This, other, _retval); - if(This->nsuri) - return nsIURI_Equals(This->nsuri, other, _retval); - - nsres = nsIURI_QueryInterface(other, &IID_nsWineURI, (void**)&wine_uri); + nsres = nsIURI_QueryInterface(other, &IID_nsWineURI, (void**)&other_obj); if(NS_FAILED(nsres)) { TRACE("Could not get nsWineURI interface\n"); *_retval = FALSE; return NS_OK; } - *_retval = wine_uri->wine_url && !UrlCompareW(This->wine_url, wine_uri->wine_url, TRUE); - nsIURI_Release(NSURI(wine_uri)); + if(ensure_uri(This) && ensure_uri(other_obj)) { + hres = IUri_IsEqual(This->uri, other_obj->uri, _retval); + nsres = SUCCEEDED(hres) ? NS_OK : NS_ERROR_FAILURE; + }else { + nsres = NS_ERROR_UNEXPECTED; + } - return NS_OK; + nsIURI_Release(NSURI(other_obj)); + return nsres; } static nsresult NSAPI nsURI_SchemeIs(nsIURL *iface, const char *scheme, PRBool *_retval)