Module: wine Branch: master Commit: 64271d5207bf095efb430fcfdba582b80b53a08d URL: http://source.winehq.org/git/wine.git/?a=commit;h=64271d5207bf095efb430fcfdb...
Author: Jacek Caban jacek@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);