diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 20cdac62fc..66f4450ec7 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -198,10 +198,9 @@ void hlink_frame_navigate(HTMLDocument*,IHlinkFrame*,LPCWSTR,nsIInputStream*,DWO nsIURI *get_nsIURI(LPCWSTR); -nsACString *nsACString_Create(void); +void nsACString_Init(nsACString*,const char*); PRUint32 nsACString_GetData(const nsACString*,const char**,PRBool*); -void nsACString_SetData(nsACString*,const char*); -void nsACString_Destroy(nsACString*); +void nsACString_Finish(nsACString*); void nsAString_Init(nsAString*,const PRUnichar*); PRUint32 nsAString_GetData(const nsAString*,const PRUnichar**,PRBool*); diff --git a/dlls/mshtml/nsembed.c b/dlls/mshtml/nsembed.c index 03c1fed886..9cabc7112b 100644 --- a/dlls/mshtml/nsembed.c +++ b/dlls/mshtml/nsembed.c @@ -361,17 +361,11 @@ static BOOL load_gecko(void) return TRUE; } -nsACString *nsACString_Create(void) +void nsACString_Init(nsACString *str, const char *data) { - nsACString *ret; - ret = HeapAlloc(GetProcessHeap(), 0, sizeof(nsACString)); - NS_CStringContainerInit(ret); - return ret; -} - -void nsACString_SetData(nsACString *str, const char *data) -{ - NS_CStringSetData(str, data, PR_UINT32_MAX); + NS_CStringContainerInit(str); + if(data) + NS_CStringSetData(str, data, PR_UINT32_MAX); } PRUint32 nsACString_GetData(const nsACString *str, const char **data, PRBool *termited) @@ -379,10 +373,9 @@ PRUint32 nsACString_GetData(const nsACString *str, const char **data, PRBool *te return NS_CStringGetData(str, data, termited); } -void nsACString_Destroy(nsACString *str) +void nsACString_Finish(nsACString *str) { NS_CStringContainerFinish(str); - HeapFree(GetProcessHeap(), 0, str); } void nsAString_Init(nsAString *str, const PRUnichar *data) @@ -727,16 +720,17 @@ static nsresult NSAPI nsURIContentListener_OnStartURIOpen(nsIURIContentListener { NSContainer *This = NSURICL_THIS(iface); nsIWineURI *wine_uri; - nsACString *spec_str = nsACString_Create(); + nsACString spec_str; const char *spec; nsresult nsres; - nsIURI_GetSpec(aURI, spec_str); - nsACString_GetData(spec_str, &spec, NULL); + nsACString_Init(&spec_str, NULL); + nsIURI_GetSpec(aURI, &spec_str); + nsACString_GetData(&spec_str, &spec, NULL); TRACE("(%p)->(%p(%s) %p)\n", This, aURI, debugstr_a(spec), _retval); - nsACString_Destroy(spec_str); + nsACString_Finish(&spec_str); nsres = nsIURI_QueryInterface(aURI, &IID_nsIWineURI, (void**)&wine_uri); if(NS_SUCCEEDED(nsres)) { diff --git a/dlls/mshtml/nsiface.idl b/dlls/mshtml/nsiface.idl index 7c0ad2f47d..176ef9b753 100644 --- a/dlls/mshtml/nsiface.idl +++ b/dlls/mshtml/nsiface.idl @@ -47,6 +47,13 @@ typedef ULARGE_INTEGER PRUint64; typedef PRUint64 DOMTimeStamp; typedef PRUint32 nsLoadFlags; +typedef struct { + void *v; + void *d1; + PRUint32 d2; + void *d3; +} nsCStringContainer; + typedef struct { void *v; void *d1; @@ -54,7 +61,6 @@ typedef struct { void *d3; } nsStringContainer; -typedef struct nsCStringContainer nsCStringContainer; typedef nsCStringContainer nsACString; typedef nsStringContainer nsAString; diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c index 9a42cf6b8b..51b3160504 100644 --- a/dlls/mshtml/nsio.c +++ b/dlls/mshtml/nsio.c @@ -146,7 +146,7 @@ static BOOL handle_uri(NSContainer *container, nsChannel *channel, LPCWSTR uri) static BOOL before_async_open(nsChannel *This) { - nsACString *uri_str; + nsACString uri_str; NSContainer *container; const char *uria; LPWSTR uri; @@ -167,13 +167,13 @@ static BOOL before_async_open(nsChannel *This) return TRUE; } - uri_str = nsACString_Create(); - nsIWineURI_GetSpec(This->uri, uri_str); - nsACString_GetData(uri_str, &uria, NULL); + nsACString_Init(&uri_str, NULL); + nsIWineURI_GetSpec(This->uri, &uri_str); + nsACString_GetData(&uri_str, &uria, NULL); len = MultiByteToWideChar(CP_ACP, 0, uria, -1, NULL, 0); uri = HeapAlloc(GetProcessHeap(), 0, len*sizeof(WCHAR)); MultiByteToWideChar(CP_ACP, 0, uria, -1, uri, len); - nsACString_Destroy(uri_str); + nsACString_Finish(&uri_str); ret = handle_uri(container, This, uri); @@ -613,13 +613,15 @@ static nsresult NSAPI nsChannel_AsyncOpen(nsIHttpChannel *iface, nsIStreamListen nsres = nsIChannel_QueryInterface(This->channel, &IID_nsIUploadChannel, (void**)&upload_channel); if(NS_SUCCEEDED(nsres)) { - nsACString *empty_string = nsACString_Create(); - nsACString_SetData(empty_string, ""); + nsACString empty_string; + nsACString_Init(&empty_string, ""); nsres = nsIUploadChannel_SetUploadStream(upload_channel, This->post_data_stream, - empty_string, -1); + &empty_string, -1); if(NS_FAILED(nsres)) WARN("SetUploadStream failed: %08lx\n", nsres); + + nsACString_Finish(&empty_string); } } @@ -1380,18 +1382,20 @@ static nsresult NSAPI nsIOService_NewURI(nsIIOService *iface, const nsACString * aBaseURI, _retval); if(aBaseURI) { - nsACString *base_uri_str = nsACString_Create(); + nsACString base_uri_str; const char *base_uri = NULL; - nsres = nsIURI_GetSpec(aBaseURI, base_uri_str); + nsACString_Init(&base_uri_str, NULL); + + nsres = nsIURI_GetSpec(aBaseURI, &base_uri_str); if(NS_SUCCEEDED(nsres)) { - nsACString_GetData(base_uri_str, &base_uri, NULL); + nsACString_GetData(&base_uri_str, &base_uri, NULL); TRACE("uri=%s\n", debugstr_a(base_uri)); }else { ERR("GetSpec failed: %08lx\n", nsres); } - nsACString_Destroy(base_uri_str); + nsACString_Finish(&base_uri_str); } nsres = nsIIOService_NewURI(nsio, aSpec, aOriginCharset, aBaseURI, &uri); @@ -1603,7 +1607,7 @@ void init_nsio(nsIComponentManager *component_manager, nsIComponentRegistrar *re nsIURI *get_nsIURI(LPCWSTR url) { nsIURI *ret; - nsACString *acstr; + nsACString acstr; nsresult nsres; char *urla; int len; @@ -1612,14 +1616,13 @@ nsIURI *get_nsIURI(LPCWSTR url) urla = HeapAlloc(GetProcessHeap(), 0, len); WideCharToMultiByte(CP_ACP, 0, url, -1, urla, -1, NULL, NULL); - acstr = nsACString_Create(); - nsACString_SetData(acstr, urla); + nsACString_Init(&acstr, urla); - nsres = nsIIOService_NewURI(nsio, acstr, NULL, NULL, &ret); + nsres = nsIIOService_NewURI(nsio, &acstr, NULL, NULL, &ret); if(NS_FAILED(nsres)) FIXME("NewURI failed: %08lx\n", nsres); - nsACString_Destroy(acstr); + nsACString_Finish(&acstr); HeapFree(GetProcessHeap(), 0, urla); return ret; diff --git a/dlls/mshtml/persist.c b/dlls/mshtml/persist.c index 6f181a62a6..9496ceb67d 100644 --- a/dlls/mshtml/persist.c +++ b/dlls/mshtml/persist.c @@ -115,18 +115,18 @@ static HRESULT WINAPI BindStatusCallback_OnStartBinding(IBindStatusCallback *ifa IBinding_AddRef(pbind); if(This->doc->nscontainer && This->doc->nscontainer->stream) { - nsACString *strTextHtml; + nsACString strTextHtml; nsresult nsres; nsIURI *uri = get_nsIURI(This->url); - strTextHtml = nsACString_Create(); /* FIXME: Set it correctly */ - nsACString_SetData(strTextHtml, "text/html"); + nsACString_Init(&strTextHtml, "text/html"); - nsres = nsIWebBrowserStream_OpenStream(This->doc->nscontainer->stream, uri, strTextHtml); + nsres = nsIWebBrowserStream_OpenStream(This->doc->nscontainer->stream, uri, &strTextHtml); if(NS_FAILED(nsres)) ERR("OpenStream failed: %08lx\n", nsres); + nsACString_Finish(&strTextHtml); nsIURI_Release(uri); }