From 8e0039aaec2bd449bc4f73d82307bde5dcfc79ae Mon Sep 17 00:00:00 2001 From: Forgetest <33988868+jensewe@users.noreply.github.com> Date: Sat, 1 Apr 2023 00:19:04 +0800 Subject: [PATCH] [DHooks] Fix `NaN` return when superceding pre-detour (#1967) * Update hook.cpp * Update hook.cpp --- extensions/dhooks/DynamicHooks/hook.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/dhooks/DynamicHooks/hook.cpp b/extensions/dhooks/DynamicHooks/hook.cpp index dd255248..58fbab13 100644 --- a/extensions/dhooks/DynamicHooks/hook.cpp +++ b/extensions/dhooks/DynamicHooks/hook.cpp @@ -160,7 +160,7 @@ ReturnAction_t CHook::HookHandler(HookType_t eHookType) { ReturnAction_t lastPreReturnAction = m_LastPreReturnAction.back(); m_LastPreReturnAction.pop_back(); - if (lastPreReturnAction == ReturnAction_Override) + if (lastPreReturnAction >= ReturnAction_Override) m_pCallingConvention->RestoreReturnValue(m_pRegisters); if (lastPreReturnAction < ReturnAction_Supercede) m_pCallingConvention->RestoreCallArguments(m_pRegisters); @@ -191,7 +191,7 @@ ReturnAction_t CHook::HookHandler(HookType_t eHookType) if (eHookType == HOOKTYPE_PRE) { m_LastPreReturnAction.push_back(returnAction); - if (returnAction == ReturnAction_Override) + if (returnAction >= ReturnAction_Override) m_pCallingConvention->SaveReturnValue(m_pRegisters); if (returnAction < ReturnAction_Supercede) m_pCallingConvention->SaveCallArguments(m_pRegisters);