Module: wine Branch: refs/heads/master Commit: dbd582cf8423c2c3cb723386df37c89a59e45789 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=dbd582cf8423c2c3cb723386...
Author: Jacek Caban jacek@codeweavers.com Date: Sat Mar 18 22:00:34 2006 +0100
mshtml: Optimize nsACString handling.
---
dlls/mshtml/mshtml_private.h | 5 ++--- dlls/mshtml/nsembed.c | 26 ++++++++++---------------- dlls/mshtml/nsiface.idl | 8 +++++++- dlls/mshtml/nsio.c | 37 ++++++++++++++++++++----------------- dlls/mshtml/persist.c | 8 ++++---- 5 files changed, 43 insertions(+), 41 deletions(-)
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 20cdac6..66f4450 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -198,10 +198,9 @@ void hlink_frame_navigate(HTMLDocument*,
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 03c1fed..9cabc71 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 nsACSt 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 nsURIContentListen { 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 7c0ad2f..176ef9b 100644 --- a/dlls/mshtml/nsiface.idl +++ b/dlls/mshtml/nsiface.idl @@ -52,9 +52,15 @@ typedef struct { void *d1; PRUint32 d2; void *d3; +} nsCStringContainer; + +typedef struct { + void *v; + void *d1; + PRUint32 d2; + 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 9a42cf6..51b3160 100644 --- a/dlls/mshtml/nsio.c +++ b/dlls/mshtml/nsio.c @@ -146,7 +146,7 @@ static BOOL handle_uri(NSContainer *cont
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 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_AsyncOpe 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 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 *comp 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 6f181a6..9496ceb 100644 --- a/dlls/mshtml/persist.c +++ b/dlls/mshtml/persist.c @@ -115,18 +115,18 @@ static HRESULT WINAPI BindStatusCallback 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); }