From c8ae28bbaf3a16ca445647da47968573078507e9 Mon Sep 17 00:00:00 2001 From: Nev3r Date: Tue, 1 Dec 2020 18:35:24 +0100 Subject: [PATCH 1/2] Follow GZDoom's convention for stringargs. --- src/p_setup.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/p_setup.c b/src/p_setup.c index 918ffbd4e..e02cb34aa 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -1628,9 +1628,9 @@ static void ParseTextmapLinedefParameter(UINT32 i, char *param, char *val) return; lines[i].args[argnum] = atol(val); } - else if (fastncmp(param, "stringarg", 9) && strlen(param) > 9) + else if (strlen(param) == 7 && fastncmp(param, "arg", 3) && fastncmp(param + 4, "str", 3)) { - size_t argnum = param[9] - '0'; + size_t argnum = param[3] - '0'; if (argnum >= NUMLINESTRINGARGS) return; lines[i].stringargs[argnum] = Z_Malloc(strlen(val) + 1, PU_LEVEL, NULL); @@ -1727,9 +1727,9 @@ static void ParseTextmapThingParameter(UINT32 i, char *param, char *val) return; mapthings[i].args[argnum] = atol(val); } - else if (fastncmp(param, "stringarg", 9) && strlen(param) > 9) + else if (strlen(param) == 7 && fastncmp(param, "arg", 3) && fastncmp(param + 4, "str", 3)) { - size_t argnum = param[9] - '0'; + size_t argnum = param[3] - '0'; if (argnum >= NUMMAPTHINGSTRINGARGS) return; mapthings[i].stringargs[argnum] = Z_Malloc(strlen(val) + 1, PU_LEVEL, NULL); From 4d716cb1707b3822dd333f57214faf8e8875aac1 Mon Sep 17 00:00:00 2001 From: Nev3r Date: Tue, 1 Dec 2020 19:44:58 +0100 Subject: [PATCH 2/2] Move the numerical arg check below so that the string gets checked first (who decided to give them such similar names anyway). --- src/p_setup.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/p_setup.c b/src/p_setup.c index e02cb34aa..41d8822e2 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -1621,13 +1621,6 @@ static void ParseTextmapLinedefParameter(UINT32 i, char *param, char *val) P_SetLinedefV1(i, atol(val)); else if (fastcmp(param, "v2")) P_SetLinedefV2(i, atol(val)); - else if (fastncmp(param, "arg", 3) && strlen(param) > 3) - { - size_t argnum = atol(param + 3); - if (argnum >= NUMLINEARGS) - return; - lines[i].args[argnum] = atol(val); - } else if (strlen(param) == 7 && fastncmp(param, "arg", 3) && fastncmp(param + 4, "str", 3)) { size_t argnum = param[3] - '0'; @@ -1636,6 +1629,13 @@ static void ParseTextmapLinedefParameter(UINT32 i, char *param, char *val) lines[i].stringargs[argnum] = Z_Malloc(strlen(val) + 1, PU_LEVEL, NULL); M_Memcpy(lines[i].stringargs[argnum], val, strlen(val) + 1); } + else if (fastncmp(param, "arg", 3) && strlen(param) > 3) + { + size_t argnum = atol(param + 3); + if (argnum >= NUMLINEARGS) + return; + lines[i].args[argnum] = atol(val); + } else if (fastcmp(param, "sidefront")) lines[i].sidenum[0] = atol(val); else if (fastcmp(param, "sideback")) @@ -1720,13 +1720,6 @@ static void ParseTextmapThingParameter(UINT32 i, char *param, char *val) else if (fastcmp(param, "ambush") && fastcmp("true", val)) mapthings[i].options |= MTF_AMBUSH; - else if (fastncmp(param, "arg", 3) && strlen(param) > 3) - { - size_t argnum = atol(param + 3); - if (argnum >= NUMMAPTHINGARGS) - return; - mapthings[i].args[argnum] = atol(val); - } else if (strlen(param) == 7 && fastncmp(param, "arg", 3) && fastncmp(param + 4, "str", 3)) { size_t argnum = param[3] - '0'; @@ -1735,6 +1728,13 @@ static void ParseTextmapThingParameter(UINT32 i, char *param, char *val) mapthings[i].stringargs[argnum] = Z_Malloc(strlen(val) + 1, PU_LEVEL, NULL); M_Memcpy(mapthings[i].stringargs[argnum], val, strlen(val) + 1); } + else if (fastncmp(param, "arg", 3) && strlen(param) > 3) + { + size_t argnum = atol(param + 3); + if (argnum >= NUMMAPTHINGARGS) + return; + mapthings[i].args[argnum] = atol(val); + } } /** From a given position table, run a specified parser function through a {}-encapsuled text.