Jacek Caban : mshtml: Store window URL as BSTR.

Alexandre Julliard julliard at winehq.org
Mon Nov 14 13:33:56 CST 2011


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu Nov 10 14:35:11 2011 +0100

mshtml: Store window URL as BSTR.

---

 dlls/mshtml/mshtml_private.h |    2 +-
 dlls/mshtml/navigate.c       |    6 ++----
 dlls/mshtml/persist.c        |   11 ++++++++---
 3 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h
index 3a15c58..08da2d7 100644
--- a/dlls/mshtml/mshtml_private.h
+++ b/dlls/mshtml/mshtml_private.h
@@ -308,7 +308,7 @@ struct HTMLWindow {
 
     nsChannelBSC *bscallback;
     IMoniker *mon;
-    LPOLESTR url;
+    BSTR url;
 
     IHTMLEventObj *event;
 
diff --git a/dlls/mshtml/navigate.c b/dlls/mshtml/navigate.c
index 0e0ea27..a2ecd8b 100644
--- a/dlls/mshtml/navigate.c
+++ b/dlls/mshtml/navigate.c
@@ -1261,7 +1261,7 @@ static void handle_navigation_error(nsChannelBSC *This, DWORD result)
     SAFEARRAYBOUND bound;
     VARIANT var, varOut;
     LONG ind;
-    BSTR url, unk;
+    BSTR unk;
     HRESULT hres;
 
     if(!This->window)
@@ -1296,8 +1296,7 @@ static void handle_navigation_error(nsChannelBSC *This, DWORD result)
 
     ind = 1;
     V_VT(&var) = VT_BSTR;
-    url = SysAllocString(This->window->url);
-    V_BSTR(&var) = url;
+    V_BSTR(&var) = This->window->url;
     SafeArrayPutElement(sa, &ind, &var);
 
     ind = 3;
@@ -1338,7 +1337,6 @@ static void handle_navigation_error(nsChannelBSC *This, DWORD result)
     V_BOOL(&varOut) = VARIANT_TRUE;
     IOleCommandTarget_Exec(olecmd, &CGID_DocHostCmdPriv, 1, 0, &var, FAILED(hres)?NULL:&varOut);
 
-    SysFreeString(url);
     SysFreeString(unk);
     SafeArrayDestroy(sa);
     IOleCommandTarget_Release(olecmd);
diff --git a/dlls/mshtml/persist.c b/dlls/mshtml/persist.c
index 2e2643f..412dab7 100644
--- a/dlls/mshtml/persist.c
+++ b/dlls/mshtml/persist.c
@@ -68,6 +68,7 @@ static BOOL use_gecko_script(HTMLWindow *window)
 
 void set_current_mon(HTMLWindow *This, IMoniker *mon)
 {
+    WCHAR *url;
     HRESULT hres;
 
     if(This->mon) {
@@ -76,7 +77,7 @@ void set_current_mon(HTMLWindow *This, IMoniker *mon)
     }
 
     if(This->url) {
-        CoTaskMemFree(This->url);
+        SysFreeString(This->url);
         This->url = NULL;
     }
 
@@ -86,9 +87,13 @@ void set_current_mon(HTMLWindow *This, IMoniker *mon)
     IMoniker_AddRef(mon);
     This->mon = mon;
 
-    hres = IMoniker_GetDisplayName(mon, NULL, NULL, &This->url);
-    if(FAILED(hres))
+    hres = IMoniker_GetDisplayName(mon, NULL, NULL, &url);
+    if(SUCCEEDED(hres)) {
+        This->url = SysAllocString(url);
+        CoTaskMemFree(url);
+    }else {
         WARN("GetDisplayName failed: %08x\n", hres);
+    }
 
     set_script_mode(This, use_gecko_script(This) ? SCRIPTMODE_GECKO : SCRIPTMODE_ACTIVESCRIPT);
 }




More information about the wine-cvs mailing list