Skip to content

Commit b492481

Browse files
committed
fix if the hook is not called at the start of the process, the hook may fail
1 parent 8298cdc commit b492481

File tree

7 files changed

+534
-49
lines changed

7 files changed

+534
-49
lines changed

samples/common.mak

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ CLIB=/MT
2323
!ENDIF
2424

2525
AFLAGS=/nologo /Zi /c /Fl
26-
CFLAGS=/nologo /Zi $(CLIB) /Gm- /W4 /WX /we4777 /we4800 /Od
26+
CFLAGS=/nologo /Zi $(CLIB) /Gm- /W4 /WX /we4777 /we4800 /Od /D__AUTO_CREATE_DETOUR_HEAP__
2727

2828
!IF $(DETOURS_SOURCE_BROWSING)==1
2929
CFLAGS=$(CFLAGS) /FR

src/creatwth.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1023,7 +1023,7 @@ VOID CALLBACK DetourFinishHelperProcess(_In_ HWND,
10231023
goto Cleanup;
10241024
}
10251025

1026-
rlpDlls = new NOTHROW LPCSTR [s_pHelper->nDlls];
1026+
rlpDlls = DetourCreateObjectArray<LPCSTR>(s_pHelper->nDlls);
10271027
cSize = s_pHelper->cb - sizeof(DETOUR_EXE_HELPER);
10281028
for (DWORD n = 0; n < s_pHelper->nDlls; n++) {
10291029
size_t cchDest = 0;
@@ -1047,7 +1047,7 @@ VOID CALLBACK DetourFinishHelperProcess(_In_ HWND,
10471047

10481048
Cleanup:
10491049
if (rlpDlls != NULL) {
1050-
delete[] rlpDlls;
1050+
DetourDestroyObjectArray(rlpDlls);
10511051
rlpDlls = NULL;
10521052
}
10531053

@@ -1124,7 +1124,7 @@ BOOL WINAPI AllocExeHelper(_Out_ PDETOUR_EXE_HELPER *pHelper,
11241124
cSize += (DWORD)cchDest + 1;
11251125
}
11261126

1127-
Helper = (PDETOUR_EXE_HELPER) new NOTHROW BYTE[sizeof(DETOUR_EXE_HELPER) + cSize];
1127+
Helper = (PDETOUR_EXE_HELPER)DetourCreateObjectArray<BYTE>(sizeof(DETOUR_EXE_HELPER) + cSize);
11281128
if (Helper == NULL) {
11291129
goto Cleanup;
11301130
}
@@ -1189,7 +1189,7 @@ BOOL WINAPI AllocExeHelper(_Out_ PDETOUR_EXE_HELPER *pHelper,
11891189

11901190
Cleanup:
11911191
if (Helper != NULL) {
1192-
delete[] (PBYTE)Helper;
1192+
DetourDestroyObjectArray((PBYTE)Helper);
11931193
Helper = NULL;
11941194
}
11951195
return Result;
@@ -1199,7 +1199,7 @@ static
11991199
VOID WINAPI FreeExeHelper(PDETOUR_EXE_HELPER *pHelper)
12001200
{
12011201
if (*pHelper != NULL) {
1202-
delete[] (PBYTE)*pHelper;
1202+
DetourDestroyObjectArray((PBYTE)*pHelper);
12031203
*pHelper = NULL;
12041204
}
12051205
}

0 commit comments

Comments
 (0)