]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - cmd.c
cl_nettimesyncboundmode: use default if invalid
[xonotic/darkplaces.git] / cmd.c
diff --git a/cmd.c b/cmd.c
index 8a301066fd644556bacd6cc45784eaee9651ebc5..6230fa021854d31fd72fb6535b664e3ddd196446 100644 (file)
--- a/cmd.c
+++ b/cmd.c
@@ -386,12 +386,14 @@ static void Cbuf_Execute_Deferred (cmd_buf_t *cbuf)
 Cbuf_Execute
 ============
 */
+extern qbool prvm_runawaycheck;
 static qbool Cmd_PreprocessString(cmd_state_t *cmd, const char *intext, char *outtext, unsigned maxoutlen, cmd_alias_t *alias );
 void Cbuf_Execute (cmd_buf_t *cbuf)
 {
        cmd_input_t *current;
        char preprocessed[MAX_INPUTLINE];
        char *firstchar;
+       unsigned int i = 0;
 
        // LadyHavoc: making sure the tokenizebuffer doesn't get filled up by repeated crashes
        cbuf->tokenizebufferpos = 0;
@@ -443,6 +445,16 @@ void Cbuf_Execute (cmd_buf_t *cbuf)
                        cbuf->wait = false;
                        break;
                }
+
+               if (++i == 1000000 && prvm_runawaycheck)
+               {
+                       Con_Printf(CON_WARN "Cbuf_Execute: runaway loop counter hit limit of %d commands, clearing command buffers!\n", i);
+                       while (!List_Is_Empty(&cbuf->start))
+                               List_Move_Tail(cbuf->start.next, &cbuf->free);
+                       while (!List_Is_Empty(&cbuf->deferred))
+                               List_Move_Tail(cbuf->deferred.next, &cbuf->free);
+                       cbuf->size = 0;
+               }
        }
 }
 
@@ -1694,7 +1706,7 @@ void Cmd_Shutdown(void)
 Cmd_Argc
 ============
 */
-int            Cmd_Argc (cmd_state_t *cmd)
+inline int Cmd_Argc (cmd_state_t *cmd)
 {
        return cmd->argc;
 }
@@ -1704,7 +1716,7 @@ int               Cmd_Argc (cmd_state_t *cmd)
 Cmd_Argv
 ============
 */
-const char *Cmd_Argv(cmd_state_t *cmd, int arg)
+inline const char *Cmd_Argv(cmd_state_t *cmd, int arg)
 {
        if (arg >= cmd->argc )
                return cmd->null_string;
@@ -1716,7 +1728,7 @@ const char *Cmd_Argv(cmd_state_t *cmd, int arg)
 Cmd_Args
 ============
 */
-const char *Cmd_Args (cmd_state_t *cmd)
+inline const char *Cmd_Args (cmd_state_t *cmd)
 {
        return cmd->args;
 }