Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/browseui/aclmulti.c | 30 ++++++++++------------- dlls/browseui/aclsource.c | 13 ++-------- dlls/browseui/browseui_main.c | 5 ++-- dlls/browseui/compcatcachedaemon.c | 7 ++---- dlls/browseui/progressdlg.c | 38 ++++++++++-------------------- 5 files changed, 31 insertions(+), 62 deletions(-)
diff --git a/dlls/browseui/aclmulti.c b/dlls/browseui/aclmulti.c index a41cb810369..47547cdd1e1 100644 --- a/dlls/browseui/aclmulti.c +++ b/dlls/browseui/aclmulti.c @@ -34,8 +34,6 @@ #include "shlguid.h" #include "shlobj.h"
-#include "wine/heap.h" - #include "browseui.h"
WINE_DEFAULT_DEBUG_CHANNEL(browseui); @@ -80,17 +78,6 @@ static void release_obj(struct ACLMultiSublist *obj) IACList_Release(obj->pACL); }
-static void ACLMulti_Destructor(ACLMulti *This) -{ - int i; - TRACE("destroying %p\n", This); - for (i = 0; i < This->nObjs; i++) - release_obj(&This->objs[i]); - heap_free(This->objs); - heap_free(This); - BROWSEUI_refCount--; -} - static HRESULT WINAPI ACLMulti_QueryInterface(IEnumString *iface, REFIID iid, LPVOID *ppvOut) { ACLMulti *This = impl_from_IEnumString(iface); @@ -129,10 +116,18 @@ static ULONG WINAPI ACLMulti_Release(IEnumString *iface) { ACLMulti *This = impl_from_IEnumString(iface); ULONG ret; + int i;
ret = InterlockedDecrement(&This->refCount); if (ret == 0) - ACLMulti_Destructor(This); + { + for (i = 0; i < This->nObjs; i++) + release_obj(&This->objs[i]); + free(This->objs); + free(This); + BROWSEUI_refCount--; + } + return ret; }
@@ -224,7 +219,7 @@ static HRESULT WINAPI ACLMulti_Append(IObjMgr *iface, IUnknown *obj) if (obj == NULL) return E_FAIL;
- This->objs = heap_realloc(This->objs, sizeof(This->objs[0]) * (This->nObjs+1)); + This->objs = realloc(This->objs, sizeof(This->objs[0]) * (This->nObjs+1)); This->objs[This->nObjs].punk = obj; IUnknown_AddRef(obj); if (FAILED(IUnknown_QueryInterface(obj, &IID_IEnumString, (LPVOID *)&This->objs[This->nObjs].pEnum))) @@ -247,7 +242,7 @@ static HRESULT WINAPI ACLMulti_Remove(IObjMgr *iface, IUnknown *obj) release_obj(&This->objs[i]); memmove(&This->objs[i], &This->objs[i+1], (This->nObjs-i-1)*sizeof(struct ACLMultiSublist)); This->nObjs--; - This->objs = heap_realloc(This->objs, sizeof(This->objs[0]) * This->nObjs); + This->objs = realloc(This->objs, sizeof(This->objs[0]) * This->nObjs); return S_OK; }
@@ -313,8 +308,7 @@ HRESULT ACLMulti_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut) if (pUnkOuter) return CLASS_E_NOAGGREGATION;
- This = heap_alloc_zero(sizeof(ACLMulti)); - if (This == NULL) + if (!(This = calloc(1, sizeof(ACLMulti)))) return E_OUTOFMEMORY;
This->IEnumString_iface.lpVtbl = &ACLMultiVtbl; diff --git a/dlls/browseui/aclsource.c b/dlls/browseui/aclsource.c index 4412ca38003..72bf323c62e 100644 --- a/dlls/browseui/aclsource.c +++ b/dlls/browseui/aclsource.c @@ -34,8 +34,6 @@ #include "shlguid.h" #include "shlobj.h"
-#include "wine/heap.h" - #include "browseui.h"
WINE_DEFAULT_DEBUG_CHANNEL(browseui); @@ -57,12 +55,6 @@ static inline ACLShellSource *impl_from_IEnumString(IEnumString *iface) return CONTAINING_RECORD(iface, ACLShellSource, IEnumString_iface); }
-static void ACLShellSource_Destructor(ACLShellSource *This) -{ - TRACE("destroying %p\n", This); - heap_free(This); -} - static HRESULT WINAPI ACLShellSource_QueryInterface(IEnumString *iface, REFIID iid, LPVOID *ppvOut) { ACLShellSource *This = impl_from_IEnumString(iface); @@ -106,7 +98,7 @@ static ULONG WINAPI ACLShellSource_Release(IEnumString *iface) TRACE("(%p)->(%lu)\n", This, ref);
if (ref == 0) - ACLShellSource_Destructor(This); + free(This); return ref; }
@@ -205,8 +197,7 @@ HRESULT ACLShellSource_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut) if (pUnkOuter) return CLASS_E_NOAGGREGATION;
- This = heap_alloc_zero(sizeof(ACLShellSource)); - if (This == NULL) + if (!(This = calloc(1, sizeof(*This)))) return E_OUTOFMEMORY;
This->IEnumString_iface.lpVtbl = &ACLShellSourceVtbl; diff --git a/dlls/browseui/browseui_main.c b/dlls/browseui/browseui_main.c index b6962b30f26..6d089725d3c 100644 --- a/dlls/browseui/browseui_main.c +++ b/dlls/browseui/browseui_main.c @@ -32,7 +32,6 @@ #include "shlguid.h" #include "rpcproxy.h"
-#include "wine/heap.h" #include "browseui.h"
#include "initguid.h" @@ -72,7 +71,7 @@ static inline ClassFactory *impl_from_IClassFactory(IClassFactory *iface) static void ClassFactory_Destructor(ClassFactory *This) { TRACE("Destroying class factory %p\n", This); - heap_free(This); + free(This); InterlockedDecrement(&BROWSEUI_refCount); }
@@ -147,7 +146,7 @@ static const IClassFactoryVtbl ClassFactoryVtbl = {
static HRESULT ClassFactory_Constructor(LPFNCONSTRUCTOR ctor, LPVOID *ppvOut) { - ClassFactory *This = heap_alloc(sizeof(ClassFactory)); + ClassFactory *This = malloc(sizeof(*This)); This->IClassFactory_iface.lpVtbl = &ClassFactoryVtbl; This->ref = 1; This->ctor = ctor; diff --git a/dlls/browseui/compcatcachedaemon.c b/dlls/browseui/compcatcachedaemon.c index 6de0d87ef38..f7a5e4b449f 100644 --- a/dlls/browseui/compcatcachedaemon.c +++ b/dlls/browseui/compcatcachedaemon.c @@ -34,8 +34,6 @@ #include "shlguid.h" #include "shlobj.h"
-#include "wine/heap.h" - #include "browseui.h" #include "resids.h"
@@ -57,7 +55,7 @@ static void CompCatCacheDaemon_Destructor(CompCatCacheDaemon *This) TRACE("destroying %p\n", This); This->cs.DebugInfo->Spare[0] = 0; DeleteCriticalSection(&This->cs); - heap_free(This); + free(This); InterlockedDecrement(&BROWSEUI_refCount); }
@@ -146,8 +144,7 @@ HRESULT CompCatCacheDaemon_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut) if (pUnkOuter) return CLASS_E_NOAGGREGATION;
- This = heap_alloc(sizeof(CompCatCacheDaemon)); - if (This == NULL) + if (!(This = calloc(1, sizeof(*This)))) return E_OUTOFMEMORY;
This->IRunnableTask_iface.lpVtbl = &CompCatCacheDaemonVtbl; diff --git a/dlls/browseui/progressdlg.c b/dlls/browseui/progressdlg.c index dc0fe813f68..11a973034fa 100644 --- a/dlls/browseui/progressdlg.c +++ b/dlls/browseui/progressdlg.c @@ -34,8 +34,6 @@ #include "shlguid.h" #include "shlobj.h"
-#include "wine/heap.h" - #include "browseui.h" #include "resids.h"
@@ -88,17 +86,8 @@ static inline ProgressDialog *impl_from_IOleWindow(IOleWindow *iface)
static void set_buffer(LPWSTR *buffer, LPCWSTR string) { - IMalloc *malloc; - ULONG cb; - - if (string == NULL) - string = L""; - CoGetMalloc(MEMCTX_TASK, &malloc); - - cb = (lstrlenW(string) + 1)*sizeof(WCHAR); - if (*buffer == NULL || cb > IMalloc_GetSize(malloc, *buffer)) - *buffer = IMalloc_Realloc(malloc, *buffer, cb); - memcpy(*buffer, string, cb); + free(*buffer); + *buffer = wcsdup(string ? string : L""); }
struct create_params @@ -114,7 +103,7 @@ static LPWSTR load_string(HINSTANCE hInstance, UINT uiResourceId) LPWSTR ret;
LoadStringW(hInstance, uiResourceId, string, ARRAY_SIZE(string)); - ret = HeapAlloc(GetProcessHeap(), 0, (lstrlenW(string) + 1) * sizeof(WCHAR)); + ret = malloc((lstrlenW(string) + 1) * sizeof(WCHAR)); lstrcpyW(ret, string); return ret; } @@ -277,17 +266,17 @@ static void ProgressDialog_Destructor(ProgressDialog *This) TRACE("destroying %p\n", This); if (This->hwnd) end_dialog(This); - for (i = 0; i < 3; i++) - heap_free(This->lines[i]); - heap_free(This->cancelMsg); - heap_free(This->title); - for (i = 0; i < 2; i++) - heap_free(This->remainingMsg[i]); - for (i = 0; i < 3; i++) - heap_free(This->timeMsg[i]); + for (i = 0; i < ARRAY_SIZE(This->lines); i++) + free(This->lines[i]); + free(This->cancelMsg); + free(This->title); + for (i = 0; i < ARRAY_SIZE(This->remainingMsg); i++) + free(This->remainingMsg[i]); + for (i = 0; i < ARRAY_SIZE(This->timeMsg); i++) + free(This->timeMsg[i]); This->cs.DebugInfo->Spare[0] = 0; DeleteCriticalSection(&This->cs); - heap_free(This); + free(This); InterlockedDecrement(&BROWSEUI_refCount); }
@@ -635,8 +624,7 @@ HRESULT ProgressDialog_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut) if (pUnkOuter) return CLASS_E_NOAGGREGATION;
- This = heap_alloc_zero(sizeof(ProgressDialog)); - if (This == NULL) + if (!(This = calloc(1, sizeof(*This)))) return E_OUTOFMEMORY;
This->IProgressDialog_iface.lpVtbl = &ProgressDialogVtbl;
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/browseui/tests/autocomplete.c | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-)
diff --git a/dlls/browseui/tests/autocomplete.c b/dlls/browseui/tests/autocomplete.c index ff1033fc6ff..0c28a2a8cf8 100644 --- a/dlls/browseui/tests/autocomplete.c +++ b/dlls/browseui/tests/autocomplete.c @@ -37,14 +37,6 @@ ok(FALSE, #exp " failed: %#lx\n", res); \ }
-static LPWSTR strdup_AtoW(LPCSTR str) -{ - int size = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0); - LPWSTR wstr = CoTaskMemAlloc((size + 1)*sizeof(WCHAR)); - MultiByteToWideChar(CP_ACP, 0, str, -1, wstr, size+1); - return wstr; -} - typedef struct { IEnumString IEnumString_iface; @@ -54,7 +46,7 @@ typedef struct INT expcount; INT pos; INT limit; - const char **data; + const WCHAR **data; } TestACL;
extern IEnumStringVtbl TestACLVtbl; @@ -70,7 +62,7 @@ static TestACL *impl_from_IACList(IACList *iface) return CONTAINING_RECORD(iface, TestACL, IACList_iface); }
-static TestACL *TestACL_Constructor(int limit, const char **strings) +static TestACL *TestACL_Constructor(int limit, const WCHAR **strings) { TestACL *This = CoTaskMemAlloc(sizeof(TestACL)); ZeroMemory(This, sizeof(*This)); @@ -127,6 +119,7 @@ static HRESULT STDMETHODCALLTYPE TestACL_QueryInterface(IEnumString *iface, REFI static HRESULT STDMETHODCALLTYPE TestACL_Next(IEnumString *iface, ULONG celt, LPOLESTR *rgelt, ULONG *pceltFetched) { TestACL *This = impl_from_IEnumString(iface); + int size; ULONG i;
trace("ACL(%p): read %ld item(s)\n", This, celt); @@ -134,7 +127,10 @@ static HRESULT STDMETHODCALLTYPE TestACL_Next(IEnumString *iface, ULONG celt, LP { if (This->pos >= This->limit) break; - rgelt[i] = strdup_AtoW(This->data[This->pos]); + + size = wcslen(This->data[This->pos]); + rgelt[i] = CoTaskMemAlloc((size + 1) * sizeof(WCHAR)); + wcscpy(rgelt[i], This->data[This->pos]); This->pos++; }
@@ -222,8 +218,8 @@ IACListVtbl TestACL_ACListVtbl =
static void test_ACLMulti(void) { - const char *strings1[] = {"a", "c", "e"}; - const char *strings2[] = {"a", "b", "d"}; + const WCHAR *strings1[] = { L"a", L"c", L"e" }; + const WCHAR *strings2[] = { L"a", L"b", L"d" }; const WCHAR exp[] = L"ABC"; IEnumString *obj; IEnumACString *unk;