]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - prvm_exec.c
removed \n from all Host_Error, Sys_Error, PRVM_ERROR, PF_ERROR calls, since Host_Err...
[xonotic/darkplaces.git] / prvm_exec.c
index 4314b1fa951cec7c18454aabcc1d90dcf467e7e1..2f8c97aeebc3d12de5e056dc07e4ed1261029017 100644 (file)
@@ -123,7 +123,14 @@ PRVM_PrintStatement
 */
 void PRVM_PrintStatement (dstatement_t *s)
 {
-       int             i;
+       size_t i;
+
+       if( prog->statement_linenums ) {
+               int opnum;
+
+               opnum = s - prog->statements;
+               Con_Printf( "%s:%i: ", PRVM_GetString( prog->xfunction->s_file ), prog->statement_linenums[ opnum ] );
+       }
 
        if ( (unsigned)s->op < sizeof(prvm_opnames)/sizeof(prvm_opnames[0]))
        {
@@ -199,7 +206,7 @@ void PRVM_Profile_f (void)
                Con_Print("prvm_profile <program name>\n");
                return;
        }
-       
+
        PRVM_Begin;
        if(!PRVM_SetProgFromString(Cmd_Argv(1)))
                return;
@@ -227,6 +234,7 @@ void PRVM_Profile_f (void)
                        num++;
                        best->profile = 0;
                        best->builtinsprofile = 0;
+                       best->callcount = 0;
                }
        } while (best);
 
@@ -245,7 +253,7 @@ void PRVM_CrashAll()
                PRVM_SetProg(i);
                PRVM_Crash();
        }
-       
+
        prog = oldprog;
 }
 
@@ -265,23 +273,21 @@ void PRVM_PrintState(void)
 
 void PRVM_Crash()
 {
+       if (prog == NULL)
+               return;
 
-       //TODO: make this more compilant with PR_Crash
-       if (prog->depth < 1)
+       if( prog->depth > 0 )
        {
-               // kill the stack just to be sure
-               prog->depth = 0;
-               prog->localstack_used = 0;
-               return;
+               Con_Printf("QuakeC crash report for %s:\n", PRVM_NAME);
+               PRVM_PrintState();
        }
 
-       Con_Printf("QuakeC crash report for %s:\n", PRVM_NAME);
-       PRVM_PrintState();
-
        // dump the stack so host_error can shutdown functions
        prog->depth = 0;
        prog->localstack_used = 0;
 
+       // reset the prog pointer
+       prog = NULL;
 }
 
 /*
@@ -304,7 +310,7 @@ int PRVM_EnterFunction (mfunction_t *f)
        int             i, j, c, o;
 
        if (!f)
-               PRVM_ERROR ("PRVM_EnterFunction: NULL function in %s\n", PRVM_NAME);
+               PRVM_ERROR ("PRVM_EnterFunction: NULL function in %s", PRVM_NAME);
 
        prog->stack[prog->depth].s = prog->xstatement;
        prog->stack[prog->depth].f = prog->xfunction;
@@ -315,7 +321,7 @@ int PRVM_EnterFunction (mfunction_t *f)
 // save off any locals that the new function steps on
        c = f->locals;
        if (prog->localstack_used + c > PRVM_LOCALSTACK_SIZE)
-               PRVM_ERROR ("PRVM_ExecuteProgram: locals stack overflow in %s\n", PRVM_NAME);
+               PRVM_ERROR ("PRVM_ExecuteProgram: locals stack overflow in %s", PRVM_NAME);
 
        for (i=0 ; i < c ; i++)
                prog->localstack[prog->localstack_used+i] = ((int *)prog->globals.generic)[f->parm_start + i];
@@ -349,12 +355,12 @@ int PRVM_LeaveFunction (void)
                PRVM_ERROR ("prog stack underflow in %s", PRVM_NAME);
 
        if (!prog->xfunction)
-               PRVM_ERROR ("PR_LeaveFunction: NULL function in %s\n", PRVM_NAME);
+               PRVM_ERROR ("PR_LeaveFunction: NULL function in %s", PRVM_NAME);
 // restore locals from the stack
        c = prog->xfunction->locals;
        prog->localstack_used -= c;
        if (prog->localstack_used < 0)
-               PRVM_ERROR ("PRVM_ExecuteProgram: locals stack underflow in %s\n", PRVM_NAME);
+               PRVM_ERROR ("PRVM_ExecuteProgram: locals stack underflow in %s", PRVM_NAME);
 
        for (i=0 ; i < c ; i++)
                ((int *)prog->globals.generic)[prog->xfunction->parm_start + i] = prog->localstack[prog->localstack_used+i];
@@ -386,7 +392,7 @@ PRVM_ExecuteProgram
 extern cvar_t prvm_boundscheck;
 extern cvar_t prvm_traceqc;
 extern int             PRVM_ED_FindFieldOffset (const char *field);
-extern ddef_t* PRVM_ED_FindGlobal(const char *name); 
+extern ddef_t* PRVM_ED_FindGlobal(const char *name);
 void PRVM_ExecuteProgram (func_t fnum, const char *errormessage)
 {
        dstatement_t    *st;