Jacek Caban : mshtml: Store URL in unicode in nsURI.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Feb 12 09:23:46 CST 2007


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Feb  9 20:17:16 2007 +0100

mshtml: Store URL in unicode in nsURI.

---

 dlls/mshtml/nsio.c |   26 +++++++++++++++-----------
 1 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c
index 6366ba2..150d242 100644
--- a/dlls/mshtml/nsio.c
+++ b/dlls/mshtml/nsio.c
@@ -27,6 +27,7 @@
 #include "winuser.h"
 #include "ole2.h"
 #include "shlguid.h"
+#include "wininet.h"
 
 #include "wine/debug.h"
 #include "wine/unicode.h"
@@ -53,7 +54,7 @@ typedef struct {
     nsIURI *uri;
     NSContainer *container;
     IMoniker *mon;
-    LPSTR spec;
+    LPWSTR wine_url;
     PRBool is_doc_uri;
 } nsURI;
 
@@ -1145,7 +1146,7 @@ static nsrefcnt NSAPI nsURI_Release(nsIW
             nsIURI_Release(This->uri);
         if(This->mon)
             IMoniker_Release(This->mon);
-        mshtml_free(This->spec);
+        mshtml_free(This->wine_url);
         mshtml_free(This);
     }
 
@@ -1161,8 +1162,11 @@ static nsresult NSAPI nsURI_GetSpec(nsIW
     if(This->uri)
         return nsIURI_GetSpec(This->uri, aSpec);
 
-    if(This->spec) {
-        nsACString_SetData(aSpec, This->spec);
+    if(This->wine_url) {
+        char speca[INTERNET_MAX_URL_LENGTH];
+        WideCharToMultiByte(CP_ACP, 0, This->wine_url, -1, speca, sizeof(speca), NULL, NULL);
+        nsACString_SetData(aSpec, speca);
+
         return NS_OK;
     }
 
@@ -1563,8 +1567,8 @@ static nsresult NSAPI nsURI_SetMoniker(n
         WARN("Moniker already set: %p\n", This->container);
         IMoniker_Release(This->mon);
 
-        mshtml_free(This->spec);
-        This->spec = NULL;
+        mshtml_free(This->wine_url);
+        This->wine_url = NULL;
     }
 
     if(aMoniker) {
@@ -1575,12 +1579,12 @@ static nsresult NSAPI nsURI_SetMoniker(n
         if(SUCCEEDED(hres)) {
             DWORD len;
 
-            len = WideCharToMultiByte(CP_ACP, 0, url, -1, NULL, 0, NULL, NULL);
-            This->spec = mshtml_alloc(len*sizeof(WCHAR));
-            WideCharToMultiByte(CP_ACP, 0, url, -1, This->spec, -1, NULL, NULL);
+            len = strlenW(url)+1;
+            This->wine_url = mshtml_alloc(len*sizeof(WCHAR));
+            memcpy(This->wine_url, url, len*sizeof(WCHAR));
             CoTaskMemFree(url);
 
-            TRACE("spec %s\n", debugstr_a(This->spec));
+            TRACE("wine_url %s\n", debugstr_w(This->wine_url));
         }else {
             ERR("GetDisplayName failed: %08x\n", hres);
         }
@@ -1661,7 +1665,7 @@ static nsresult create_uri(nsIURI *uri,
     ret->uri = uri;
     ret->container = container;
     ret->mon = NULL;
-    ret->spec = NULL;
+    ret->wine_url = NULL;
     ret->is_doc_uri = FALSE;
 
     if(container)




More information about the wine-cvs mailing list