diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/sys/con_win32.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/sys/con_win32.c b/src/sys/con_win32.c index e80885fe..d33afa54 100644 --- a/src/sys/con_win32.c +++ b/src/sys/con_win32.c @@ -38,6 +38,7 @@ static CONSOLE_CURSOR_INFO qconsole_orig_cursorinfo; // cmd history static char qconsole_history[ QCONSOLE_HISTORY ][ MAX_EDIT_LINE ]; static int qconsole_history_pos = -1; +static int qconsole_history_lines = 0; static int qconsole_history_oldest = 0; // current edit buffer @@ -108,6 +109,9 @@ static void CON_HistAdd( void ) Q_strncpyz( qconsole_history[ qconsole_history_oldest ], qconsole_line, sizeof( qconsole_history[ qconsole_history_oldest ] ) ); + if( qconsole_history_lines < QCONSOLE_HISTORY ) + qconsole_history_lines++; + if( qconsole_history_oldest >= QCONSOLE_HISTORY - 1 ) qconsole_history_oldest = 0; else @@ -129,7 +133,7 @@ static void CON_HistPrev( void ) ( QCONSOLE_HISTORY - 1 ) : ( qconsole_history_pos - 1 ); // don' t allow looping through history - if( pos == qconsole_history_oldest ) + if( pos == qconsole_history_oldest || pos >= qconsole_history_lines ) return; qconsole_history_pos = pos; @@ -147,12 +151,17 @@ static void CON_HistNext( void ) { int pos; + // don' t allow looping through history + if( qconsole_history_pos == qconsole_history_oldest ) + return; + pos = ( qconsole_history_pos >= QCONSOLE_HISTORY - 1 ) ? 0 : ( qconsole_history_pos + 1 ); // clear the edit buffer if they try to advance to a future command if( pos == qconsole_history_oldest ) { + qconsole_history_pos = pos; qconsole_line[ 0 ] = '\0'; qconsole_linelen = 0; return; |