Skip to content

Commit

Permalink
* (bug 2741) replace K_LAST_KEY with MAX_KEYS. K_LAST_KEY is now defined
Browse files Browse the repository at this point in the history
             at 256 for mod compatability reasons.  ioq3-only mods may
             chose to use MAX_KEYS for checking binds in order to get full
             key support, but at the cost of breaking compatability with
             older clients.

* (bug 2741) remove some lingering 256-key hardcoding

* properly check bounds of keynum in Key_IsDown(), Key_SetBinding(),
  and Key_GetBinding()
  • Loading branch information
tjdub committed Mar 22, 2007
1 parent dce62fb commit f9bb47d
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 8 deletions.
10 changes: 5 additions & 5 deletions code/client/cl_keys.c
Expand Up @@ -782,7 +782,7 @@ Key_IsDown
===================
*/
qboolean Key_IsDown( int keynum ) {
if ( keynum == -1 ) {
if ( keynum < 0 || keynum >= MAX_KEYS ) {
return qfalse;
}

Expand Down Expand Up @@ -902,7 +902,7 @@ Key_SetBinding
===================
*/
void Key_SetBinding( int keynum, const char *binding ) {
if ( keynum == -1 ) {
if ( keynum < 0 || keynum >= MAX_KEYS ) {
return;
}

Expand All @@ -926,7 +926,7 @@ Key_GetBinding
===================
*/
char *Key_GetBinding( int keynum ) {
if ( keynum == -1 ) {
if ( keynum < 0 || keynum >= MAX_KEYS ) {
return "";
}

Expand All @@ -943,7 +943,7 @@ int Key_GetKey(const char *binding) {
int i;

if (binding) {
for (i=0 ; i<256 ; i++) {
for (i=0 ; i < MAX_KEYS ; i++) {
if (keys[i].binding && Q_stricmp(binding, keys[i].binding) == 0) {
return i;
}
Expand Down Expand Up @@ -986,7 +986,7 @@ void Key_Unbindall_f (void)
{
int i;

for (i=0 ; i<256 ; i++)
for (i=0 ; i < MAX_KEYS; i++)
if (keys[i].binding)
Key_SetBinding (i, "");
}
Expand Down
6 changes: 5 additions & 1 deletion code/client/keycodes.h
Expand Up @@ -260,9 +260,13 @@ typedef enum {
K_EURO,
K_UNDO,

K_LAST_KEY // this had better be < MAX_KEYS!
MAX_KEYS
} keyNum_t;

// MAX_KEYS replaces K_LAST_KEY, however some mods may have used K_LAST_KEY
// in detecting binds, so we leave it defined to the old hardcoded value
// of maxiumum keys to prevent mods from crashing older versions of the engine
#define K_LAST_KEY 256

// The menu code needs to get both key and char events, but
// to avoid duplicating the paths, the char events are just
Expand Down
2 changes: 0 additions & 2 deletions code/client/keys.h
Expand Up @@ -21,8 +21,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "keycodes.h"

#define MAX_KEYS 384

typedef struct {
qboolean down;
int repeats; // if > 1, it is autorepeating
Expand Down

0 comments on commit f9bb47d

Please sign in to comment.