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);