Jacek Caban : mshtml: Use URI with stripped "wine:" part in NewURI call.

Alexandre Julliard julliard at winehq.org
Thu Apr 22 11:24:07 CDT 2010


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu Apr 22 17:48:12 2010 +0200

mshtml: Use URI with stripped "wine:" part in NewURI call.

---

 dlls/mshtml/mshtml_private.h |    2 ++
 dlls/mshtml/nsembed.c        |   21 +++++++++++++--------
 dlls/mshtml/nsio.c           |    3 +++
 3 files changed, 18 insertions(+), 8 deletions(-)

diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h
index 3db8d79..c88b3e5 100644
--- a/dlls/mshtml/mshtml_private.h
+++ b/dlls/mshtml/mshtml_private.h
@@ -727,8 +727,10 @@ HRESULT call_set_active_object(IOleInPlaceUIWindow*,IOleInPlaceActiveObject*);
 void *nsalloc(size_t) __WINE_ALLOC_SIZE(1);
 void nsfree(void*);
 
+void nsACString_InitDepend(nsACString*,const char*);
 void nsACString_SetData(nsACString*,const char*);
 PRUint32 nsACString_GetData(const nsACString*,const char**);
+void nsACString_Finish(nsACString*);
 
 BOOL nsAString_Init(nsAString*,const PRUnichar*);
 void nsAString_InitDepend(nsAString*,const PRUnichar*);
diff --git a/dlls/mshtml/nsembed.c b/dlls/mshtml/nsembed.c
index 8a59007..ddf3c3a 100644
--- a/dlls/mshtml/nsembed.c
+++ b/dlls/mshtml/nsembed.c
@@ -48,19 +48,14 @@ WINE_DECLARE_DEBUG_CHANNEL(gecko);
 
 #define PR_UINT32_MAX 0xffffffff
 
-struct nsCStringContainer {
-    void *v;
-    void *d1;
-    PRUint32 d2;
-    PRUint32 d3;
-};
-
 #define NS_STRING_CONTAINER_INIT_DEPEND  0x0002
+#define NS_CSTRING_CONTAINER_INIT_DEPEND 0x0002
 
 static nsresult (*NS_InitXPCOM2)(nsIServiceManager**,void*,void*);
 static nsresult (*NS_ShutdownXPCOM)(nsIServiceManager*);
 static nsresult (*NS_GetComponentRegistrar)(nsIComponentRegistrar**);
 static nsresult (*NS_StringContainerInit2)(nsStringContainer*,const PRUnichar*,PRUint32,PRUint32);
+static nsresult (*NS_CStringContainerInit2)(nsCStringContainer*,const char*,PRUint32,PRUint32);
 static nsresult (*NS_CStringContainerInit)(nsCStringContainer*);
 static nsresult (*NS_StringContainerFinish)(nsStringContainer*);
 static nsresult (*NS_CStringContainerFinish)(nsCStringContainer*);
@@ -187,6 +182,7 @@ static BOOL load_xpcom(const PRUnichar *gre_path)
     NS_DLSYM(NS_InitXPCOM2);
     NS_DLSYM(NS_ShutdownXPCOM);
     NS_DLSYM(NS_GetComponentRegistrar);
+    NS_DLSYM(NS_CStringContainerInit2);
     NS_DLSYM(NS_StringContainerInit2);
     NS_DLSYM(NS_CStringContainerInit);
     NS_DLSYM(NS_StringContainerFinish);
@@ -533,6 +529,15 @@ static void nsACString_Init(nsACString *str, const char *data)
         nsACString_SetData(str, data);
 }
 
+/*
+ * Initializes nsACString with data owned by caller.
+ * Caller must ensure that data is valid during lifetime of string object.
+ */
+void nsACString_InitDepend(nsACString *str, const char *data)
+{
+    NS_CStringContainerInit2(str, data, PR_UINT32_MAX, NS_CSTRING_CONTAINER_INIT_DEPEND);
+}
+
 void nsACString_SetData(nsACString *str, const char *data)
 {
     NS_CStringSetData(str, data, PR_UINT32_MAX);
@@ -543,7 +548,7 @@ PRUint32 nsACString_GetData(const nsACString *str, const char **data)
     return NS_CStringGetData(str, data, NULL);
 }
 
-static void nsACString_Finish(nsACString *str)
+void nsACString_Finish(nsACString *str)
 {
     NS_CStringContainerFinish(str);
 }
diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c
index 0c8e457..c9bb54a 100644
--- a/dlls/mshtml/nsio.c
+++ b/dlls/mshtml/nsio.c
@@ -2453,6 +2453,7 @@ static nsresult NSAPI nsIOService_NewURI(nsIIOService *iface, const nsACString *
     HTMLWindow *window = NULL;
     nsIURI *uri = NULL;
     LPCWSTR base_wine_url = NULL;
+    nsACString spec_str;
     nsresult nsres;
 
     nsACString_GetData(aSpec, &spec);
@@ -2485,7 +2486,9 @@ static nsresult NSAPI nsIOService_NewURI(nsIIOService *iface, const nsACString *
         }
     }
 
+    nsACString_InitDepend(&spec_str, spec);
     nsres = nsIIOService_NewURI(nsio, aSpec, aOriginCharset, aBaseURI, &uri);
+    nsACString_Finish(&spec_str);
     if(NS_FAILED(nsres))
         TRACE("NewURI failed: %08x\n", nsres);
 




More information about the wine-cvs mailing list