]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - prvm_exec.c
experimental makefile option make DP_LINK_TO_JPEG=1 - use libjpeg.h instead of dynami...
[xonotic/darkplaces.git] / prvm_exec.c
index 8adee10ff3fc3a8b654513711b74c7e817a1dcf0..55a91d92d9438d148fe6312b951aa5181bfd7a86 100644 (file)
@@ -276,7 +276,7 @@ void PRVM_ShortStackTrace(char *buf, size_t bufsize)
        }
        else
        {
-               strlcpy(buf, "<NO PROG>", sizeof(buf));
+               strlcpy(buf, "<NO PROG>", bufsize);
                return;
        }
 
@@ -443,6 +443,10 @@ void PRVM_CrashAll()
 void PRVM_PrintState(void)
 {
        int i;
+       if(prog->statestring)
+       {
+               Con_Printf("Caller-provided information: %s\n", prog->statestring);
+       }
        if (prog->xfunction)
        {
                for (i = -7; i <= 0;i++)
@@ -586,12 +590,11 @@ PRVM_ExecuteProgram
 #define OPA ((prvm_eval_t *)&prog->globals.generic[(unsigned short) st->a])
 #define OPB ((prvm_eval_t *)&prog->globals.generic[(unsigned short) st->b])
 #define OPC ((prvm_eval_t *)&prog->globals.generic[(unsigned short) st->c])
-#ifdef PRVM_BOUNDSCHECK_CVAR
-extern cvar_t prvm_boundscheck;
-#endif
 extern cvar_t prvm_traceqc;
 extern cvar_t prvm_statementprofiling;
 extern sizebuf_t vm_tempstringsbuf;
+extern qboolean prvm_runawaycheck;
+extern qboolean prvm_boundscheck;
 void PRVM_ExecuteProgram (func_t fnum, const char *errormessage)
 {
        dstatement_t    *st, *startst;
@@ -634,77 +637,141 @@ void PRVM_ExecuteProgram (func_t fnum, const char *errormessage)
 
 chooseexecprogram:
        cachedpr_trace = prog->trace;
-       if (prvm_statementprofiling.integer)
+       if (prvm_runawaycheck)
        {
-#define PRVMSTATEMENTPROFILING 1
-#ifdef PRVM_BOUNDSCHECK_CVAR
-               if (prvm_boundscheck.integer)
-#endif
+#define PRVMRUNAWAYCHECK 1
+               if (prvm_statementprofiling.integer)
                {
-#define PRVMBOUNDSCHECK 1
-                       if (prog->trace)
+#define PRVMSTATEMENTPROFILING 1
+                       if (prvm_boundscheck)
                        {
+#define PRVMBOUNDSCHECK 1
+                               if (prog->trace)
+                               {
 #define PRVMTRACE 1
 #include "prvm_execprogram.h"
 #undef PRVMTRACE
+                               }
+                               else
+                               {
+#include "prvm_execprogram.h"
+                               }
+#undef PRVMBOUNDSCHECK
                        }
                        else
                        {
+                               if (prog->trace)
+                               {
+#define PRVMTRACE 1
 #include "prvm_execprogram.h"
+#undef PRVMTRACE
+                               }
+                               else
+                               {
+#include "prvm_execprogram.h"
+                               }
                        }
-#undef PRVMBOUNDSCHECK
+#undef PRVMSTATEMENTPROFILING
                }
-#ifdef PRVM_BOUNDSCHECK_CVAR
                else
                {
-                       if (prog->trace)
+                       if (prvm_boundscheck)
                        {
+#define PRVMBOUNDSCHECK 1
+                               if (prog->trace)
+                               {
 #define PRVMTRACE 1
 #include "prvm_execprogram.h"
 #undef PRVMTRACE
+                               }
+                               else
+                               {
+#include "prvm_execprogram.h"
+                               }
+#undef PRVMBOUNDSCHECK
                        }
                        else
                        {
+                               if (prog->trace)
+                               {
+#define PRVMTRACE 1
 #include "prvm_execprogram.h"
+#undef PRVMTRACE
+                               }
+                               else
+                               {
+#include "prvm_execprogram.h"
+                               }
                        }
                }
-#endif
-#undef PRVMSTATEMENTPROFILING
+#undef PRVMRUNAWAYCHECK
        }
        else
        {
-#ifdef PRVM_BOUNDSCHECK_CVAR
-               if (prvm_boundscheck.integer)
-#endif
+               if (prvm_statementprofiling.integer)
                {
-#define PRVMBOUNDSCHECK 1
-                       if (prog->trace)
+#define PRVMSTATEMENTPROFILING 1
+                       if (prvm_boundscheck)
                        {
+#define PRVMBOUNDSCHECK 1
+                               if (prog->trace)
+                               {
 #define PRVMTRACE 1
 #include "prvm_execprogram.h"
 #undef PRVMTRACE
+                               }
+                               else
+                               {
+#include "prvm_execprogram.h"
+                               }
+#undef PRVMBOUNDSCHECK
                        }
                        else
                        {
+                               if (prog->trace)
+                               {
+#define PRVMTRACE 1
+#include "prvm_execprogram.h"
+#undef PRVMTRACE
+                               }
+                               else
+                               {
 #include "prvm_execprogram.h"
+                               }
                        }
-#undef PRVMBOUNDSCHECK
+#undef PRVMSTATEMENTPROFILING
                }
-#ifdef PRVM_BOUNDSCHECK_CVAR
                else
                {
-                       if (prog->trace)
+                       if (prvm_boundscheck)
                        {
+#define PRVMBOUNDSCHECK 1
+                               if (prog->trace)
+                               {
 #define PRVMTRACE 1
 #include "prvm_execprogram.h"
 #undef PRVMTRACE
+                               }
+                               else
+                               {
+#include "prvm_execprogram.h"
+                               }
+#undef PRVMBOUNDSCHECK
                        }
                        else
                        {
+                               if (prog->trace)
+                               {
+#define PRVMTRACE 1
+#include "prvm_execprogram.h"
+#undef PRVMTRACE
+                               }
+                               else
+                               {
 #include "prvm_execprogram.h"
+                               }
                        }
                }
-#endif
        }
 
 cleanup: