Fix printf + improve wrap_function_call

This commit is contained in:
fed
2023-11-06 17:42:36 +01:00
parent 964d6dc0b7
commit ddf3edb2ed
2 changed files with 40 additions and 35 deletions
+20 -3
View File
@@ -5,11 +5,28 @@
#include <utils/hook.hpp>
BOOL APIENTRY DllMain(HMODULE /*module_*/, DWORD ul_reason_for_call, LPVOID /*reserved_*/)
namespace
{
void printf_stub(const char* fmt, ...)
{
char buffer[2048]{};
va_list ap;
va_start(ap, fmt);
vsnprintf_s(buffer, sizeof(buffer), _TRUNCATE, fmt, ap);
va_end(ap);
game::Com_Printf(0, "%s", buffer);
}
}
BOOL APIENTRY DllMain(HMODULE /*module*/, DWORD ul_reason_for_call, LPVOID /*reserved*/)
{
if (ul_reason_for_call == DLL_PROCESS_ATTACH)
{
utils::hook::jump(reinterpret_cast<size_t>(&printf), game::Com_Printf);
utils::hook::jump(reinterpret_cast<size_t>(&printf), printf_stub);
component_loader::post_unpack();
}
@@ -19,4 +36,4 @@ BOOL APIENTRY DllMain(HMODULE /*module_*/, DWORD ul_reason_for_call, LPVOID /*re
}
return TRUE;
}
}