}
+#if 1
+#define CMD_TOKENIZELENGTH 4096
+char cmd_tokenizebuffer[CMD_TOKENIZELENGTH];
+#endif
+
/*
============
Cmd_TokenizeString
*/
static void Cmd_TokenizeString (char *text)
{
- int i;
-
+ int l;
+#ifdef CMD_TOKENIZELENGTH
+ int pos;
+ pos = 0;
+#else
+ int i;
// clear the args from the last string
for (i=0 ; i<cmd_argc ; i++)
Z_Free (cmd_argv[i]);
+#endif
cmd_argc = 0;
cmd_args = NULL;
if (cmd_argc < MAX_ARGS)
{
- cmd_argv[cmd_argc] = Z_Malloc (strlen(com_token)+1);
+ l = strlen(com_token) + 1;
+#ifdef CMD_TOKENIZELENGTH
+ if (pos + l > CMD_TOKENIZELENGTH)
+ Sys_Error("Cmd_TokenizeString: ran out of %i character buffer space for command arguements\n", CMD_TOKENIZELENGTH);
+ cmd_argv[cmd_argc] = cmd_tokenizebuffer + pos;
+ pos += l;
+#else
+ cmd_argv[cmd_argc] = Z_Malloc (l);
+#endif
strcpy (cmd_argv[cmd_argc], com_token);
cmd_argc++;
}