From c8ae28bbaf3a16ca445647da47968573078507e9 Mon Sep 17 00:00:00 2001
From: Nev3r <apophycens@gmail.com>
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 <apophycens@gmail.com>
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.