X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=fs.c;h=6058893ec1d50023d841f33b70887a54c6dec235;hb=5c095672f598f0ee564c9926a53d0f03ab6aa382;hp=c9e6d565494550f0283ca713320c82f79e670b5f;hpb=43ccc403e08b7b72eb687f2d3700e14ea078d30a;p=xonotic%2Fdarkplaces.git diff --git a/fs.c b/fs.c index c9e6d565..6058893e 100644 --- a/fs.c +++ b/fs.c @@ -1622,25 +1622,27 @@ void FS_Init_SelfPack (void) const char **new_argv; int i = 0; int args_left = 256; + new_argv = (const char **)Mem_Alloc(fs_mempool, sizeof(*com_argv) * (com_argc + args_left + 2)); if(com_argc == 0) { - com_argv[0] = "dummy"; - com_argv[1] = NULL; + new_argv[0] = "dummy"; com_argc = 1; } - new_argv = Mem_Alloc(fs_mempool, sizeof(*com_argv) * (com_argc + args_left + 1)); + else + { + memcpy(&new_argv[0], &com_argv[0], sizeof(*com_argv) * com_argc); + } p = buf; while(COM_ParseToken_Console(&p)) { if(i >= args_left) break; - q = Mem_Alloc(fs_mempool, strlen(com_token) + 1); + q = (char *)Mem_Alloc(fs_mempool, strlen(com_token) + 1); strlcpy(q, com_token, strlen(com_token) + 1); - new_argv[i+1] = q; + new_argv[com_argc + i] = q; ++i; } - new_argv[0] = com_argv[0]; - memcpy(&new_argv[i+2], &com_argv[1], sizeof(*com_argv) * com_argc); + new_argv[i+com_argc] = NULL; com_argv = new_argv; com_argc = com_argc + i; }