Skip to content

Commit 3e2d403

Browse files
Fix manual hooks storing their name badly (#774)
Fix manual hooks storing their name wrong and move to just using std::string since it's much more convenient and this isn't C
1 parent 5aae421 commit 3e2d403

File tree

2 files changed

+7
-17
lines changed

2 files changed

+7
-17
lines changed

primedev/core/hooks.cpp

+6-16
Original file line numberDiff line numberDiff line change
@@ -85,39 +85,29 @@ void __fileAutohook::DispatchForModule(const char* pModuleName)
8585
hook->Dispatch();
8686
}
8787

88-
ManualHook::ManualHook(const char* funcName, LPVOID func) : pHookFunc(func), ppOrigFunc(nullptr)
89-
{
90-
const size_t iFuncNameStrlen = strlen(funcName);
91-
pFuncName = new char[iFuncNameStrlen];
92-
memcpy(pFuncName, funcName, iFuncNameStrlen);
93-
}
88+
ManualHook::ManualHook(const char* funcName, LPVOID func) : svFuncName(funcName), pHookFunc(func), ppOrigFunc(nullptr) {}
9489

95-
ManualHook::ManualHook(const char* funcName, LPVOID* orig, LPVOID func) : pHookFunc(func), ppOrigFunc(orig)
96-
{
97-
const size_t iFuncNameStrlen = strlen(funcName);
98-
pFuncName = new char[iFuncNameStrlen];
99-
memcpy(pFuncName, funcName, iFuncNameStrlen);
100-
}
90+
ManualHook::ManualHook(const char* funcName, LPVOID* orig, LPVOID func) : svFuncName(funcName), pHookFunc(func), ppOrigFunc(orig) {}
10191

10292
bool ManualHook::Dispatch(LPVOID addr, LPVOID* orig)
10393
{
10494
if (orig)
10595
ppOrigFunc = orig;
10696

10797
if (!addr)
108-
spdlog::error("Address for hook {} is invalid", pFuncName);
98+
spdlog::error("Address for hook {} is invalid", svFuncName);
10999
else if (MH_CreateHook(addr, pHookFunc, ppOrigFunc) == MH_OK)
110100
{
111101
if (MH_EnableHook(addr) == MH_OK)
112102
{
113-
spdlog::info("Enabling hook {}", pFuncName);
103+
spdlog::info("Enabling hook {}", svFuncName);
114104
return true;
115105
}
116106
else
117-
spdlog::error("MH_EnableHook failed for function {}", pFuncName);
107+
spdlog::error("MH_EnableHook failed for function {}", svFuncName);
118108
}
119109
else
120-
spdlog::error("MH_CreateHook failed for function {}", pFuncName);
110+
spdlog::error("MH_CreateHook failed for function {}", svFuncName);
121111

122112
return false;
123113
}

primedev/core/hooks.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ class __autohook
278278
class ManualHook
279279
{
280280
public:
281-
char* pFuncName;
281+
std::string svFuncName;
282282

283283
LPVOID pHookFunc;
284284
LPVOID* ppOrigFunc;

0 commit comments

Comments
 (0)