Check bounds in SDL_IsGameController. Switch two functions to SDL_bool.
Switches SDL_GameControllerGetAttached and SDL_IsGameController to
return SDL_bool, instead of int.
--- a/include/SDL_gamecontroller.h Tue Feb 12 16:17:24 2013 -0800
+++ b/include/SDL_gamecontroller.h Tue Feb 12 17:07:21 2013 -0800
@@ -113,7 +113,7 @@
* Is the joystick on this index supported by the game controller interface?
* returns 1 if supported, 0 otherwise.
*/
-extern DECLSPEC int SDLCALL SDL_IsGameController(int joystick_index);
+extern DECLSPEC SDL_bool SDLCALL SDL_IsGameController(int joystick_index);
/**
@@ -141,7 +141,7 @@
/**
* Returns 1 if the controller has been opened and currently connected, or 0 if it has not.
*/
-extern DECLSPEC int SDLCALL SDL_GameControllerGetAttached(SDL_GameController * gamecontroller);
+extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerGetAttached(SDL_GameController * gamecontroller);
/**
* Get the underlying joystick object used by a controller
--- a/src/joystick/SDL_gamecontroller.c Tue Feb 12 16:17:24 2013 -0800
+++ b/src/joystick/SDL_gamecontroller.c Tue Feb 12 17:07:21 2013 -0800
@@ -265,6 +265,10 @@
*/
ControllerMapping_t *SDL_PrivateGetControllerMapping(int device_index)
{
+ if ( (device_index < 0) || (device_index >= SDL_NumJoysticks()) ) {
+ return NULL;
+ }
+
#ifdef SDL_JOYSTICK_DINPUT
if ( SDL_SYS_IsXInputDeviceIndex(device_index) && s_pXInputMapping )
{
@@ -741,14 +745,16 @@
/*
* Return 1 if the joystick at this device index is a supported controller
*/
-int SDL_IsGameController(int device_index)
+SDL_bool
+SDL_IsGameController(int device_index)
{
ControllerMapping_t *pSupportedController = SDL_PrivateGetControllerMapping(device_index);
if ( pSupportedController )
{
- return 1;
+ return SDL_TRUE;
}
- return 0;
+
+ return SDL_FALSE;
}
/*
@@ -881,11 +887,11 @@
* Return if the joystick in question is currently attached to the system,
* \return 0 if not plugged in, 1 if still present.
*/
-int
+SDL_bool
SDL_GameControllerGetAttached( SDL_GameController * gamecontroller )
{
if ( !gamecontroller )
- return 0;
+ return SDL_FALSE;
return SDL_JoystickGetAttached(gamecontroller->joystick);
}