diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c
index 650745be82af580296af5a04afa0d6c93d4cd93d..01da4acf9cdd9b8f06f2e24154871624e46afee9 100644
--- a/dlls/mshtml/nsio.c
+++ b/dlls/mshtml/nsio.c
@@ -2058,6 +2058,9 @@ static nsresult NSAPI nsURI_Clone(nsIURL *iface, nsIURI **_retval)
 
     TRACE("(%p)->(%p)\n", This, _retval);
 
+    if(!ensure_uri(This))
+        return NS_ERROR_UNEXPECTED;
+
     if(This->nsuri) {
         nsres = nsIURI_Clone(This->nsuri, &nsuri);
         if(NS_FAILED(nsres)) {
@@ -2072,12 +2075,9 @@ static nsresult NSAPI nsURI_Clone(nsIURL *iface, nsIURI **_retval)
         return nsres;
     }
 
-    set_wine_url(wine_uri, This->wine_url);
-
-    if(This->uri) {
-        IUri_AddRef(This->uri);
-        wine_uri->uri = This->uri;
-    }
+    wine_uri->uri = This->uri;
+    IUri_AddRef(wine_uri->uri);
+    sync_wine_url(wine_uri);
 
     *_retval = NSURI(wine_uri);
     return NS_OK;