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