diff --git a/src/command.c b/src/command.c
index 543df6ce9ca558eb09133b8b9ff4f72a7e6e0861..8e2d0037e2a559232903b6ae327c701f749048ef 100644
--- a/src/command.c
+++ b/src/command.c
@@ -543,38 +543,31 @@ static void COM_ExecuteString(char *ptext)
 				char buf[1024];
 				char *write = buf, *read = a->value, *seek = read;
 
-				while (*seek != '\0')
+				while ((seek = strchr(seek, '$')) != NULL)
 				{
-					if (*seek == '$')
-					{
-						memcpy(write, read, seek-read);
-						write += seek-read;
+					memcpy(write, read, seek-read);
+					write += seek-read;
 
-						seek++;
+					seek++;
 
-						if (*seek >= '1' && *seek <= '9')
-						{
-							if (com_argc > (size_t)(*seek - '0'))
-							{
-								memcpy(write, com_argv[*seek - '0'], strlen(com_argv[*seek - '0']));
-								write += strlen(com_argv[*seek - '0']);
-							}
-							seek++;
-						}
-						else
+					if (*seek >= '1' && *seek <= '9')
+					{
+						if (com_argc > (size_t)(*seek - '0'))
 						{
-							*write = '$';
-							write++;
+							memcpy(write, com_argv[*seek - '0'], strlen(com_argv[*seek - '0']));
+							write += strlen(com_argv[*seek - '0']);
 						}
-
-						read = seek;
+						seek++;
 					}
 					else
-						seek++;
+					{
+						*write = '$';
+						write++;
+					}
+
+					read = seek;
 				}
-				memcpy(write, read, seek-read);
-				write += seek-read;
-				*write = '\0';
+				WRITESTRING(write, read);
 
 				recursion++;
 				COM_BufInsertText(buf);