Module: wine Branch: master Commit: 520f41b2591959c77fa6e51ea45ee1fa475cf976 URL: http://source.winehq.org/git/wine.git/?a=commit;h=520f41b2591959c77fa6e51ea4...
Author: Jacek Caban jacek@codeweavers.com Date: Tue Aug 11 19:15:59 2009 +0200
mshtml: Don't write null byte in IPersist*::Save functions.
---
dlls/mshtml/persist.c | 18 ++++++++---------- 1 files changed, 8 insertions(+), 10 deletions(-)
diff --git a/dlls/mshtml/persist.c b/dlls/mshtml/persist.c index c8a0c57..55bccc2 100644 --- a/dlls/mshtml/persist.c +++ b/dlls/mshtml/persist.c @@ -337,7 +337,7 @@ static HRESULT set_moniker(HTMLDocument *This, IMoniker *mon, IBindCtx *pibc, BO return S_OK; }
-static HRESULT get_doc_string(HTMLDocument *This, char **str, DWORD *len) +static HRESULT get_doc_string(HTMLDocument *This, char **str) { nsIDOMNode *nsnode; LPCWSTR strw; @@ -362,9 +362,7 @@ static HRESULT get_doc_string(HTMLDocument *This, char **str, DWORD *len) nsAString_GetData(&nsstr, &strw); TRACE("%s\n", debugstr_w(strw));
- *len = WideCharToMultiByte(CP_ACP, 0, strw, -1, NULL, 0, NULL, NULL); - *str = heap_alloc(*len); - WideCharToMultiByte(CP_ACP, 0, strw, -1, *str, *len, NULL, NULL); + *str = heap_strdupWtoA(strw);
nsAString_Finish(&nsstr);
@@ -583,7 +581,7 @@ static HRESULT WINAPI PersistFile_Save(IPersistFile *iface, LPCOLESTR pszFileNam { HTMLDocument *This = PERSISTFILE_THIS(iface); char *str; - DWORD len, written=0; + DWORD written=0; HANDLE file; HRESULT hres;
@@ -596,9 +594,9 @@ static HRESULT WINAPI PersistFile_Save(IPersistFile *iface, LPCOLESTR pszFileNam return E_FAIL; }
- hres = get_doc_string(This, &str, &len); + hres = get_doc_string(This, &str); if(SUCCEEDED(hres)) - WriteFile(file, str, len, &written, NULL); + WriteFile(file, str, strlen(str), &written, NULL);
CloseHandle(file); return hres; @@ -698,16 +696,16 @@ static HRESULT WINAPI PersistStreamInit_Save(IPersistStreamInit *iface, LPSTREAM { HTMLDocument *This = PERSTRINIT_THIS(iface); char *str; - DWORD len, written=0; + DWORD written=0; HRESULT hres;
TRACE("(%p)->(%p %x)\n", This, pStm, fClearDirty);
- hres = get_doc_string(This, &str, &len); + hres = get_doc_string(This, &str); if(FAILED(hres)) return hres;
- hres = IStream_Write(pStm, str, len, &written); + hres = IStream_Write(pStm, str, strlen(str), &written); if(FAILED(hres)) FIXME("Write failed: %08x\n", hres);