From e05a36822902684ddd2f4effb3ab7e5e7b4fa989 Mon Sep 17 00:00:00 2001 From: black Date: Wed, 13 Sep 2006 21:07:04 +0000 Subject: [PATCH] Try to fix a dedicated server crash by moving the two csqc_ cvar initializations into SV_Init. This is a hack, however, so someone else please clean this up :) The VM's internal name now is always "client", so this should make life easier when debugging (note: this doesn't affect the progs filename used). git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@6585 d7cf8633-e32d-0410-b094-e92efae38249 --- cl_main.c | 3 --- csprogs.c | 6 +++--- csprogs.h | 2 ++ progsvm.h | 2 -- prvm_cmds.c | 7 ++++--- sv_main.c | 8 ++++++++ 6 files changed, 17 insertions(+), 11 deletions(-) diff --git a/cl_main.c b/cl_main.c index f4f09c34..8db097db 100644 --- a/cl_main.c +++ b/cl_main.c @@ -1742,9 +1742,6 @@ void CL_Init (void) // // register our commands // - Cvar_RegisterVariable (&csqc_progname); - Cvar_RegisterVariable (&csqc_progcrc); - Cvar_RegisterVariable (&cl_upspeed); Cvar_RegisterVariable (&cl_forwardspeed); Cvar_RegisterVariable (&cl_backspeed); diff --git a/csprogs.c b/csprogs.c index bc01a0a9..9974dd9e 100644 --- a/csprogs.c +++ b/csprogs.c @@ -516,11 +516,13 @@ void CL_VM_Init (void) PRVM_Begin; PRVM_InitProg(PRVM_CLIENTPROG); + csqc_mempool = Mem_AllocPool("CSQC", 0, NULL); + // allocate the mempools prog->progs_mempool = Mem_AllocPool(csqc_progname.string, 0, NULL); prog->headercrc = CL_PROGHEADER_CRC; prog->edictprivate_size = 0; // no private struct used - prog->name = csqc_progname.string; + prog->name = CL_NAME; prog->num_edicts = 1; prog->limit_edicts = CL_MAX_EDICTS; prog->extensionstring = vm_cl_extensions; @@ -553,8 +555,6 @@ void CL_VM_Init (void) return; } - csqc_mempool = Mem_AllocPool("CSQC", 0, NULL); - //[515]: optional fields & funcs CL_VM_FindEdictFieldOffsets(); diff --git a/csprogs.h b/csprogs.h index 7d53c7ee..bcfc50a9 100644 --- a/csprogs.h +++ b/csprogs.h @@ -1,6 +1,8 @@ #ifndef CSPROGS_H #define CSPROGS_H +#define CL_NAME "client" + #define CL_MAX_EDICTS (1<<12) #define ENTMASK_ENGINE 1 diff --git a/progsvm.h b/progsvm.h index b10d07dd..b0ed47bd 100644 --- a/progsvm.h +++ b/progsvm.h @@ -326,7 +326,6 @@ typedef struct prvm_prog_s // number of reserved edicts (allocated from 1) int reserved_edicts; // [INIT] - prvm_edict_t *edicts; void *edictsfields; void *edictprivate; @@ -521,7 +520,6 @@ void PRVM_FreeString(int num); #define PRVM_End prog = 0 #endif - //#define PRVM_SAFENAME #ifndef PRVM_SAFENAME # define PRVM_NAME (prog->name) diff --git a/prvm_cmds.c b/prvm_cmds.c index 4660532f..96a101e5 100644 --- a/prvm_cmds.c +++ b/prvm_cmds.c @@ -17,7 +17,8 @@ void VM_Warning(const char *fmt, ...) va_end(argptr); Con_Print(msg); - PRVM_PrintState(); + // TODO: either add a cvar/cmd to control the state dumping or replace some of the calls with Con_Printf [9/13/2006 Black] + //PRVM_PrintState(); } @@ -29,8 +30,8 @@ void VM_Warning(const char *fmt, ...) static char vm_string_temp[VM_STRINGTEMP_BUFFERS][VM_STRINGTEMP_LENGTH]; static int vm_string_tempindex = 0; -// TODO: move vm_files and vm_fssearchlist to prvm_prog_t struct - +// TODO: (move vm_files and vm_fssearchlist to prvm_prog_t struct) +// TODO: move vm_files and vm_fssearchlist back [9/13/2006 Black] char *VM_GetTempString(void) { char *s; diff --git a/sv_main.c b/sv_main.c index 6d5b77b6..0eaba842 100644 --- a/sv_main.c +++ b/sv_main.c @@ -79,6 +79,13 @@ SV_Init */ void SV_Init (void) { + // init the csqc progs cvars, since they are updated/used by the server code + // TODO: fix this since this is a quick hack to make some of [515]'s broken code run ;) [9/13/2006 Black] + extern cvar_t csqc_progname; + extern cvar_t csqc_progcrc; + Cvar_RegisterVariable (&csqc_progname); + Cvar_RegisterVariable (&csqc_progcrc); + Cmd_AddCommand("sv_saveentfile", SV_SaveEntFile_f, "save map entities to .ent file (to allow external editing)"); Cvar_RegisterVariable (&sv_maxvelocity); Cvar_RegisterVariable (&sv_gravity); @@ -2350,6 +2357,7 @@ void SV_VM_Setup(void) PRVM_InitProg( PRVM_SERVERPROG ); // allocate the mempools + // TODO: move the magic numbers/constants into #defines [9/13/2006 Black] prog->progs_mempool = Mem_AllocPool("Server Progs", 0, NULL); prog->builtins = vm_sv_builtins; prog->numbuiltins = vm_sv_numbuiltins; -- 2.39.2