From 4c6abb84e23db4e3f1290f1727029d0d4a99df7c Mon Sep 17 00:00:00 2001 From: Sally Coolatta Date: Fri, 17 Mar 2023 01:52:25 -0400 Subject: [PATCH] Fix overlap for ACS_Execute args --- src/p_spec.c | 44 ++++++++++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/src/p_spec.c b/src/p_spec.c index e65c40196..be8265112 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -4156,27 +4156,47 @@ boolean P_ProcessSpecial(activator_t *activator, INT16 special, INT32 *args, cha break; case 475: // ACS_Execute - if (!stringargs[0]) { - CONS_Debug(DBG_GAMELOGIC, "Linedef type 475: No script name given\n"); - return false; - } + INT32 newArgs[NUMLINEARGS-1] = {0}; + INT32 i; - ACS_Execute(stringargs[0], args, NUMLINEARGS, activator); + if (!stringargs[0]) + { + CONS_Debug(DBG_GAMELOGIC, "Special type 475: No script name given\n"); + return false; + } + + for (i = 1; i < NUMLINEARGS; i++) + { + newArgs[i - 1] = args[i]; + } + + ACS_Execute(stringargs[0], newArgs, NUMLINEARGS-1, activator); + } break; case 476: // ACS_ExecuteAlways - if (!stringargs[0]) { - CONS_Debug(DBG_GAMELOGIC, "Linedef type 476: No script name given\n"); - return false; - } + INT32 newArgs[NUMLINEARGS-1] = {0}; + INT32 i; - ACS_ExecuteAlways(stringargs[0], args, NUMLINEARGS, activator); + if (!stringargs[0]) + { + CONS_Debug(DBG_GAMELOGIC, "Special type 475: No script name given\n"); + return false; + } + + for (i = 1; i < NUMLINEARGS; i++) + { + newArgs[i - 1] = args[i]; + } + + ACS_ExecuteAlways(stringargs[0], newArgs, NUMLINEARGS-1, activator); + } break; case 477: // ACS_Suspend if (!stringargs[0]) { - CONS_Debug(DBG_GAMELOGIC, "Linedef type 477: No script name given\n"); + CONS_Debug(DBG_GAMELOGIC, "Special type 477: No script name given\n"); return false; } @@ -4185,7 +4205,7 @@ boolean P_ProcessSpecial(activator_t *activator, INT16 special, INT32 *args, cha case 478: // ACS_Terminate if (!stringargs[0]) { - CONS_Debug(DBG_GAMELOGIC, "Linedef type 478: No script name given\n"); + CONS_Debug(DBG_GAMELOGIC, "Special type 478: No script name given\n"); return false; }