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 ) );