Jacek Caban : mshtml: Don't change nsIWineURI in OnStartBinding if it' s already marked as document URI.

Alexandre Julliard julliard at winehq.org
Tue Dec 1 09:19:39 CST 2009


Module: wine
Branch: master
Commit: ec13e51087b66a29683ff3ae387046458dd57538
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=ec13e51087b66a29683ff3ae387046458dd57538

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Nov 30 18:01:09 2009 +0100

mshtml: Don't change nsIWineURI in OnStartBinding if it's already marked as document URI.

---

 dlls/mshtml/nsembed.c |   41 +++++++++++++++++++++++------------------
 1 files changed, 23 insertions(+), 18 deletions(-)

diff --git a/dlls/mshtml/nsembed.c b/dlls/mshtml/nsembed.c
index 2150a0f..a33f88d 100644
--- a/dlls/mshtml/nsembed.c
+++ b/dlls/mshtml/nsembed.c
@@ -1149,6 +1149,7 @@ static nsresult NSAPI nsURIContentListener_OnStartURIOpen(nsIURIContentListener
     nsIWineURI *wine_uri;
     nsACString spec_str;
     const char *spec;
+    BOOL is_doc_uri;
     nsresult nsres;
 
     nsACString_Init(&spec_str, NULL);
@@ -1165,30 +1166,34 @@ static nsresult NSAPI nsURIContentListener_OnStartURIOpen(nsIURIContentListener
         return NS_ERROR_NOT_IMPLEMENTED;
     }
 
-    nsIWineURI_SetNSContainer(wine_uri, This);
-    nsIWineURI_SetIsDocumentURI(wine_uri, TRUE);
+    nsIWineURI_GetIsDocumentURI(wine_uri, &is_doc_uri);
 
-    if(This->bscallback) {
-        IMoniker *mon = get_channelbsc_mon(This->bscallback);
+    if(!is_doc_uri) {
+        nsIWineURI_SetNSContainer(wine_uri, This);
+        nsIWineURI_SetIsDocumentURI(wine_uri, TRUE);
 
-        if(mon) {
-            LPWSTR wine_url;
-            HRESULT hres;
+        if(This->bscallback) {
+            IMoniker *mon = get_channelbsc_mon(This->bscallback);
 
-            hres = IMoniker_GetDisplayName(mon, NULL, 0, &wine_url);
-            if(SUCCEEDED(hres)) {
-                nsIWineURI_SetWineURL(wine_uri, wine_url);
-                CoTaskMemFree(wine_url);
-            }else {
-                WARN("GetDisplayName failed: %08x\n", hres);
+            if(mon) {
+                LPWSTR wine_url;
+                HRESULT hres;
+
+                hres = IMoniker_GetDisplayName(mon, NULL, 0, &wine_url);
+                if(SUCCEEDED(hres)) {
+                    nsIWineURI_SetWineURL(wine_uri, wine_url);
+                    CoTaskMemFree(wine_url);
+                }else {
+                    WARN("GetDisplayName failed: %08x\n", hres);
+                }
+
+                IMoniker_Release(mon);
             }
 
-            IMoniker_Release(mon);
+            *_retval = FALSE;
+        }else if(This->doc) {
+            *_retval = translate_url(This->doc->basedoc.doc_obj, wine_uri);
         }
-
-        *_retval = FALSE;
-    }else if(This->doc) {
-        *_retval = translate_url(This->doc->basedoc.doc_obj, wine_uri);
     }
 
     nsIWineURI_Release(wine_uri);




More information about the wine-cvs mailing list