diff options
| author | tjw <tjw@edf5b092-35ff-0310-97b2-ce42778d08ea> | 2007-03-22 22:03:00 +0000 | 
|---|---|---|
| committer | tjw <tjw@edf5b092-35ff-0310-97b2-ce42778d08ea> | 2007-03-22 22:03:00 +0000 | 
| commit | a3ece0ec269afc8ec40b7d1ffb987327ce4e2d9b (patch) | |
| tree | ed19c244e2da56b8b033c001ff0f49f398b1f6e7 /code/client | |
| parent | 413d880b8aedeeb4f0f4a4c27fa4b6a1a0d31300 (diff) | |
| download | ioquake3-aero-a3ece0ec269afc8ec40b7d1ffb987327ce4e2d9b.tar.gz ioquake3-aero-a3ece0ec269afc8ec40b7d1ffb987327ce4e2d9b.zip  | |
* (bug 2741) replace K_LAST_KEY with MAX_KEYS.  K_LAST_KEY is now defined
             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()
git-svn-id: svn://svn.icculus.org/quake3/trunk@1053 edf5b092-35ff-0310-97b2-ce42778d08ea
Diffstat (limited to 'code/client')
| -rw-r--r-- | code/client/cl_keys.c | 10 | ||||
| -rw-r--r-- | code/client/keycodes.h | 6 | ||||
| -rw-r--r-- | code/client/keys.h | 2 | 
3 files changed, 10 insertions, 8 deletions
diff --git a/code/client/cl_keys.c b/code/client/cl_keys.c index acfe951..a518807 100644 --- a/code/client/cl_keys.c +++ b/code/client/cl_keys.c @@ -782,7 +782,7 @@ Key_IsDown  ===================  */  qboolean Key_IsDown( int keynum ) { -	if ( keynum == -1 ) { +	if ( keynum < 0 || keynum >= MAX_KEYS ) {  		return qfalse;  	} @@ -902,7 +902,7 @@ Key_SetBinding  ===================  */  void Key_SetBinding( int keynum, const char *binding ) { -	if ( keynum == -1 ) { +	if ( keynum < 0 || keynum >= MAX_KEYS ) {  		return;  	} @@ -926,7 +926,7 @@ Key_GetBinding  ===================  */  char *Key_GetBinding( int keynum ) { -	if ( keynum == -1 ) { +	if ( keynum < 0 || keynum >= MAX_KEYS ) {  		return "";  	} @@ -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;        } @@ -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, "");  } diff --git a/code/client/keycodes.h b/code/client/keycodes.h index 3e61ffa..c6e6412 100644 --- a/code/client/keycodes.h +++ b/code/client/keycodes.h @@ -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 diff --git a/code/client/keys.h b/code/client/keys.h index 00fc9db..851d367 100644 --- a/code/client/keys.h +++ b/code/client/keys.h @@ -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  | 
