]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - prvm_edict.c
Fixed a bug that caused some messages to not be logged to the disk (Con_Print calls...
[xonotic/darkplaces.git] / prvm_edict.c
index 064321296fd02ccbb42e992694e3d2e925748fe5..5aa1d6af158f12d58511922791f5eb2dde98431d 100644 (file)
@@ -225,7 +225,7 @@ prvm_edict_t *PRVM_ED_Alloc (void)
                e = PRVM_EDICT_NUM(i);
                // the first couple seconds of server time can involve a lot of
                // freeing and allocating, so relax the replacement policy
-               if (e->e->free && ( e->e->freetime < 2 || *prog->time - e->e->freetime > 0.5 ) )
+               if (e->e->free && ( e->e->freetime < 2 || (*prog->time - e->e->freetime) > 0.5 ) )
                {
                        PRVM_ED_ClearEdict (e);
                        return e;
@@ -255,6 +255,10 @@ FIXME: walk all entities and NULL out references to this entity
 */
 void PRVM_ED_Free (prvm_edict_t *ed)
 {
+       // dont delete the null entity (world)
+       if(PRVM_NUM_FOR_EDICT(ed) == 0)
+               return;
+
        PRVM_GCALL(free_edict)(ed);
 
        ed->e->free = true;
@@ -686,7 +690,7 @@ void PRVM_ED_PrintEdicts_f (void)
 
        if(Cmd_Argc() != 2)
        {
-               Con_Print("prvm_edicts <program name>\n");
+               Con_Printf("prvm_edicts <program name>\n");
                return;
        }
        
@@ -714,7 +718,7 @@ void PRVM_ED_PrintEdict_f (void)
 
        if(Cmd_Argc() != 3)
        {
-               Con_Print("prvm_edict <program name> <edict number>\n");
+               Con_Printf("prvm_edict <program name> <edict number>\n");
                return;
        }
 
@@ -751,7 +755,7 @@ void PRVM_ED_Count_f (void)
 
        if(Cmd_Argc() != 2)
        {
-               Con_Print("prvm_count <program name>\n");
+               Con_Printf("prvm_count <program name>\n");
                return;
        }
 
@@ -958,7 +962,7 @@ qboolean PRVM_ED_ParseEpair(prvm_edict_t *ent, ddef_t *key, const char *s)
                def = PRVM_ED_FindField(s);
                if (!def)
                {
-                       Con_DPrintf("PRVM_ED_ParseEpair: Can't find field %s on %s\n", s, PRVM_NAME);
+                       Con_DPrintf("PRVM_ED_ParseEpair: Can't find field %s in %s\n", s, PRVM_NAME);
                        return false;
                }
                val->_int = PRVM_G_INT(def->ofs);
@@ -968,7 +972,7 @@ qboolean PRVM_ED_ParseEpair(prvm_edict_t *ent, ddef_t *key, const char *s)
                func = PRVM_ED_FindFunction(s);
                if (!func)
                {
-                       Con_Printf ("PRVM_ED_ParseEpair: Can't find function %s on %s\n", s, PRVM_NAME);
+                       Con_Printf ("PRVM_ED_ParseEpair: Can't find function %s in %s\n", s, PRVM_NAME);
                        return false;
                }
                val->function = func - prog->functions;
@@ -1194,7 +1198,7 @@ PRVM_ResetProg
 
 void PRVM_ResetProg()
 {
-       mempool_t *t1, *t2, *t3;
+       /*mempool_t *t1, *t2, *t3;
 
        t1 = prog->progs_mempool;
        t2 = prog->edictstring_mempool;
@@ -1202,15 +1206,18 @@ void PRVM_ResetProg()
        
        Mem_EmptyPool(prog->progs_mempool);
        Mem_EmptyPool(prog->edictstring_mempool);
-       Mem_EmptyPool(prog->edicts_mempool);
+       Mem_EmptyPool(prog->edicts_mempool);*/
+       Mem_FreePool(&prog->progs_mempool);
+       Mem_FreePool(&prog->edictstring_mempool);
+       Mem_FreePool(&prog->edicts_mempool);
        
        memset(prog,0,sizeof(prvm_prog_t));
        
-       prog->time = &prog->_time;
+       /*prog->time = &prog->_time;
        
        prog->progs_mempool = t1;
        prog->edictstring_mempool = t2;
-       prog->edicts_mempool = t3;
+       prog->edicts_mempool = t3;*/
 
        PRVM_GCALL(reset_cmd)();
 }
@@ -1458,6 +1465,7 @@ void PRVM_LoadProgs (const char * filename, int numrequiredfunc, char **required
                prog->flag |= PRVM_OP_STATE;
        
        PRVM_GCALL(reset_cmd)();
+       PRVM_GCALL(init_cmd)();
 
        // init mempools
        PRVM_MEM_Alloc();
@@ -1484,7 +1492,7 @@ void PRVM_Fields_f (void)
 
        if(Cmd_Argc() != 2)
        {
-               Con_Print("prvm_fields <program name>\n");
+               Con_Printf("prvm_fields <program name>\n");
                return;
        }
 
@@ -1597,7 +1605,7 @@ void PRVM_Globals_f (void)
        }*/
        if(Cmd_Argc () != 2)
        {
-               Con_Print ("prvm_globals <program name>\n");
+               Con_Printf("prvm_globals <program name>\n");
                return;
        }
 
@@ -1646,11 +1654,12 @@ void PRVM_InitProg(int prognr)
 
        prog = &prog_list[prognr];
 
+       if(prog->loaded)
+               PRVM_ResetProg();
+
        memset(prog, 0, sizeof(prvm_prog_t));
 
        prog->time = &prog->_time;
-
-       PRVM_GCALL(init_cmd)();
 }
 
 int PRVM_GetProgNr()