diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c
index 547f2581f20..b39453e3fc4 100644
--- a/dlls/mshtml/nsio.c
+++ b/dlls/mshtml/nsio.c
@@ -113,6 +113,25 @@ static IUri *get_uri_nofrag(IUri *uri)
return ret;
}
+static BOOL compare_ignoring_frag(IUri *uri1, IUri *uri2)
+{
+ IUri *uri_nofrag1, *uri_nofrag2;
+ BOOL ret = FALSE;
+
+ uri_nofrag1 = get_uri_nofrag(uri1);
+ if(!uri_nofrag1)
+ return FALSE;
+
+ uri_nofrag2 = get_uri_nofrag(uri2);
+ if(uri_nofrag2) {
+ IUri_IsEqual(uri_nofrag1, uri_nofrag2, &ret);
+ IUri_Release(uri_nofrag2);
+ }
+
+ IUri_Release(uri_nofrag1);
+ return ret;
+}
+
static nsresult create_nsuri(IUri*,nsIURI*,HTMLWindow*,NSContainer*,nsWineURI**);
static const char *debugstr_nsacstr(const nsACString *nsstr)
@@ -2200,13 +2219,6 @@ static nsresult NSAPI nsURI_Equals(nsIURL *iface, nsIURI *other, PRBool *_retval
return nsres;
}
-static nsresult NSAPI nsURI_EqualsExceptRef(nsIURL *iface, nsIURI *other, PRBool *_retval)
-{
- nsWineURI *This = impl_from_nsIURL(iface);
- FIXME("(%p)->(%p %p)\n", This, other, _retval);
- return nsIURL_Equals(&This->nsIURL_iface, other, _retval);
-}
-
static nsresult NSAPI nsURI_SchemeIs(nsIURL *iface, const char *scheme, PRBool *_retval)
{
nsWineURI *This = impl_from_nsIURL(iface);
@@ -2334,6 +2346,32 @@ static nsresult NSAPI nsURI_GetOriginCharset(nsIURL *iface, nsACString *aOriginC
return NS_ERROR_NOT_IMPLEMENTED;
}
+static nsresult NSAPI nsURI_EqualsExceptRef(nsIURL *iface, nsIURI *other, PRBool *_retval)
+{
+ nsWineURI *This = impl_from_nsIURL(iface);
+ nsWineURI *other_obj;
+ nsresult nsres;
+
+ TRACE("(%p)->(%p %p)\n", This, other, _retval);
+
+ 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;
+ }
+
+ if(ensure_uri(This) && ensure_uri(other_obj)) {
+ *_retval = compare_ignoring_frag(This->uri, other_obj->uri);
+ nsres = NS_OK;
+ }else {
+ nsres = NS_ERROR_UNEXPECTED;
+ }
+
+ nsIURI_Release(&other_obj->nsIURL_iface);
+ return nsres;
+}
+
static nsresult NSAPI nsURI_CloneIgnoreRef(nsIURL *iface, nsIURI **_retval)
{
nsWineURI *This = impl_from_nsIURL(iface);