From c081b9c1fd61200776d5631d160f046cbc6326c9 Mon Sep 17 00:00:00 2001 From: Tim Angus Date: Sun, 19 Dec 2010 17:35:01 +0000 Subject: [PATCH] * (bug #4800) Don't prepend a slash to console commands if they're empty * (bug #4800) Limit console input length such that there is always room for a leading slash --- code/client/cl_keys.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/code/client/cl_keys.c b/code/client/cl_keys.c index 0f727955..fe6f13c1 100644 --- a/code/client/cl_keys.c +++ b/code/client/cl_keys.c @@ -535,12 +535,14 @@ void Field_CharEvent( field_t *edit, int ch ) { } if ( key_overstrikeMode ) { - if ( edit->cursor == MAX_EDIT_LINE - 1 ) + // - 2 to leave room for the leading slash and trailing \0 + if ( edit->cursor == MAX_EDIT_LINE - 2 ) return; edit->buffer[edit->cursor] = ch; edit->cursor++; } else { // insert mode - if ( len == MAX_EDIT_LINE - 1 ) { + // - 2 to leave room for the leading slash and trailing \0 + if ( len == MAX_EDIT_LINE - 2 ) { return; // all full } memmove( edit->buffer + edit->cursor + 1, @@ -584,8 +586,10 @@ void Console_Key (int key) { // enter finishes the line if ( key == K_ENTER || key == K_KP_ENTER ) { // if not in the game explicitly prepend a slash if needed - if ( cls.state != CA_ACTIVE && g_consoleField.buffer[0] != '\\' - && g_consoleField.buffer[0] != '/' ) { + if ( cls.state != CA_ACTIVE && + g_consoleField.buffer[0] && + g_consoleField.buffer[0] != '\\' && + g_consoleField.buffer[0] != '/' ) { char temp[MAX_EDIT_LINE-1]; Q_strncpyz( temp, g_consoleField.buffer, sizeof( temp ) );