Date: Wed, 1 Mar 2006 23:52:09 +0100
authorSam Lantinga <slouken@libsdl.org>
Thu, 02 Mar 2006 03:18:21 +0000
changeset 1458 bf8db2d92be1
parent 1457 337665b695d1
child 1459 1e8582152d44
Date: Wed, 1 Mar 2006 23:52:09 +0100 From: Sam Hocevar Subject: [SDL] [patch] aalib driver Hi there. The attached patch fixes a buffer overflow in the aalib driver and also adds a workaround for a conflict between arrow keys and the numeric keypad that have the same scancode on aalib. The patch gives precedence to the arrow keys.
src/video/aalib/SDL_aaevents.c
--- a/src/video/aalib/SDL_aaevents.c	Wed Mar 01 09:56:51 2006 +0000
+++ b/src/video/aalib/SDL_aaevents.c	Thu Mar 02 03:18:21 2006 +0000
@@ -126,12 +126,6 @@
 	for ( i=0; i<SDL_arraysize(keymap); ++i )
 		keymap[i] = SDLK_UNKNOWN;
 
-	keymap[AA_ESC] = SDLK_ESCAPE;
-	keymap[AA_UP] = SDLK_UP;
-	keymap[AA_DOWN] = SDLK_DOWN;
-	keymap[AA_LEFT] = SDLK_LEFT;
-	keymap[AA_RIGHT] = SDLK_RIGHT;
-
 	/* Alphabet keys */
 	for ( i = 0; i<26; ++i ){
 		keymap['a' + i] = SDLK_a+i;
@@ -179,10 +173,20 @@
 	keymap[293] = SDLK_KP7;
 	keymap[295] = SDLK_KP8;
 	keymap[298] = SDLK_KP9;
+
+	keymap[AA_ESC] = SDLK_ESCAPE;
+	keymap[AA_UP] = SDLK_UP;
+	keymap[AA_DOWN] = SDLK_DOWN;
+	keymap[AA_LEFT] = SDLK_LEFT;
+	keymap[AA_RIGHT] = SDLK_RIGHT;
 }
 
 static SDL_keysym *TranslateKey(int scancode, SDL_keysym *keysym)
 {
+	/* Sanity check */
+	if ( scancode >= SDL_arraysize(keymap) )
+		scancode = AA_UNKNOWN;
+
 	/* Set the keysym information */
 	keysym->scancode = scancode;
 	keysym->sym = keymap[scancode];