[Fix] More paranoid checks for possible segfaults.
This commit is contained in:
parent
bafed15cdc
commit
b36afb79da
16
src/input.c
16
src/input.c
@ -274,14 +274,26 @@ SDLKey input_keyConv(char* name) {
|
|||||||
/* Compare for single character. */
|
/* Compare for single character. */
|
||||||
if(l == 1) {
|
if(l == 1) {
|
||||||
m = MIN(256, INPUT_NUMKEYS);
|
m = MIN(256, INPUT_NUMKEYS);
|
||||||
for(k = 0; k < m; k++) /* Only valid for char range. */
|
for(k = 0; k < m; k++) { /* Only valid for char range. */
|
||||||
|
/* Must not be NULL. */
|
||||||
|
if(keyconv[k] == NULL)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/* Check if it's also a single char. */
|
||||||
if((buf == tolower(keyconv[k][0])) && (keyconv[k][1] == '\0'))
|
if((buf == tolower(keyconv[k][0])) && (keyconv[k][1] == '\0'))
|
||||||
return k;
|
return k;
|
||||||
|
}
|
||||||
} else { /* Compare for strings. */
|
} else { /* Compare for strings. */
|
||||||
for(k = 0; k < INPUT_NUMKEYS; k++)
|
for(k = 0; k < INPUT_NUMKEYS; k++) {
|
||||||
|
/* Must not be NULL. */
|
||||||
|
if(keyconv[k] == NULL)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/* Compare strings. */
|
||||||
if(strcmp(name, keyconv[k])==0)
|
if(strcmp(name, keyconv[k])==0)
|
||||||
return k;
|
return k;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
WARN("Keyname '%s' doesn't match any key.", name);
|
WARN("Keyname '%s' doesn't match any key.", name);
|
||||||
return SDLK_UNKNOWN;
|
return SDLK_UNKNOWN;
|
||||||
|
Loading…
Reference in New Issue
Block a user