From: Rémi Bernon rbernon@codeweavers.com
--- dlls/schedsvc/schedsvc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/schedsvc/schedsvc.c b/dlls/schedsvc/schedsvc.c index c670c8b1cbb..671614a1bcf 100644 --- a/dlls/schedsvc/schedsvc.c +++ b/dlls/schedsvc/schedsvc.c @@ -660,7 +660,7 @@ HRESULT __cdecl SchRpcEnumFolders(const WCHAR *path, DWORD flags, DWORD *start_i { TASK_NAMES new_list; allocated *= 2; - new_list = heap_realloc(list, allocated * sizeof(list[0])); + new_list = realloc(list, allocated * sizeof(list[0])); if (!new_list) { hr = E_OUTOFMEMORY;
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/schedsvc/schedsvc.c | 2 +- dlls/schedsvc/schedsvc_private.h | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-)
diff --git a/dlls/schedsvc/schedsvc.c b/dlls/schedsvc/schedsvc.c index 671614a1bcf..784fc5d944d 100644 --- a/dlls/schedsvc/schedsvc.c +++ b/dlls/schedsvc/schedsvc.c @@ -768,7 +768,7 @@ HRESULT __cdecl SchRpcEnumTasks(const WCHAR *path, DWORD flags, DWORD *start_ind { TASK_NAMES new_list; allocated *= 2; - new_list = heap_realloc(list, allocated * sizeof(list[0])); + new_list = realloc(list, allocated * sizeof(list[0])); if (!new_list) { hr = E_OUTOFMEMORY; diff --git a/dlls/schedsvc/schedsvc_private.h b/dlls/schedsvc/schedsvc_private.h index 62b25f97794..224b4c1b398 100644 --- a/dlls/schedsvc/schedsvc_private.h +++ b/dlls/schedsvc/schedsvc_private.h @@ -19,8 +19,6 @@ #ifndef __WINE_SCHEDSVC_PRIVATE_H__ #define __WINE_SCHEDSVC_PRIVATE_H__
-#include "wine/heap.h" - void schedsvc_auto_start(void) DECLSPEC_HIDDEN; void add_job(const WCHAR *name) DECLSPEC_HIDDEN; void remove_job(const WCHAR *name) DECLSPEC_HIDDEN;
From: Rémi Bernon rbernon@codeweavers.com
SchRpcEnumFolders names are allocated with malloc, and later freed in __finally_ITaskSchedulerService_SchRpcEnumFolders using MIDL_user_free. --- dlls/schedsvc/svc_main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/dlls/schedsvc/svc_main.c b/dlls/schedsvc/svc_main.c index 7681a220592..e3e1fcb5ffd 100644 --- a/dlls/schedsvc/svc_main.c +++ b/dlls/schedsvc/svc_main.c @@ -418,10 +418,10 @@ void WINAPI ServiceMain(DWORD argc, LPWSTR *argv)
void __RPC_FAR * __RPC_USER MIDL_user_allocate(SIZE_T len) { - return heap_alloc(len); + return malloc(len); }
void __RPC_USER MIDL_user_free(void __RPC_FAR * ptr) { - heap_free(ptr); + free(ptr); }
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/schedsvc/svc_main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/dlls/schedsvc/svc_main.c b/dlls/schedsvc/svc_main.c index e3e1fcb5ffd..349dae756fc 100644 --- a/dlls/schedsvc/svc_main.c +++ b/dlls/schedsvc/svc_main.c @@ -244,7 +244,7 @@ void schedsvc_auto_start(void) { if (!QueryServiceConfigW(service, NULL, 0, &cfg_size) && GetLastError() == ERROR_INSUFFICIENT_BUFFER) { - cfg = HeapAlloc(GetProcessHeap(), 0, cfg_size); + cfg = malloc(cfg_size); if (cfg) { if (QueryServiceConfigW(service, cfg, cfg_size, &cfg_size)) @@ -257,7 +257,7 @@ void schedsvc_auto_start(void) start_type = SERVICE_AUTO_START; } } - HeapFree(GetProcessHeap(), 0, cfg); + free(cfg); } } else
SchRpcEnumFolders names are allocated with malloc, and later freed in __finally_ITaskSchedulerService_SchRpcEnumFolders using MIDL_user_free.
FWIW, in other places we use MIDL_user_alloc() in the stub function, to avoid mismatches like these.
On Fri Jan 13 07:40:08 2023 +0000, Zebediah Figura wrote:
SchRpcEnumFolders names are allocated with malloc, and later freed in __finally_ITaskSchedulerService_SchRpcEnumFolders using MIDL_user_free.
FWIW, in other places we use MIDL_user_alloc() in the stub function, to avoid mismatches like these.
Well, the names/list allocation code uses realloc and there's no `MIDL_user_realloc`, so it's not completely trivial to change the other way either.