From aacab52a840f8c086a8fb22160c52f25fbe49032 Mon Sep 17 00:00:00 2001 From: Jeffrey Pfau Date: Tue, 21 Apr 2015 21:36:34 -0700 Subject: [PATCH] SDL: Ensure polled axes exist --- src/platform/sdl/sdl-events.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/platform/sdl/sdl-events.c b/src/platform/sdl/sdl-events.c index 5d16b801b..ed1629985 100644 --- a/src/platform/sdl/sdl-events.c +++ b/src/platform/sdl/sdl-events.c @@ -242,32 +242,33 @@ void GBASDLPlayerLoadConfig(struct GBASDLPlayer* context, const struct Configura const char* value; char* end; + int numAxes = SDL_JoystickNumAxes(context->joystick); int axis; value = GBAInputGetCustomValue(config, SDL_BINDING_BUTTON, "tiltAxisX", name); if (value) { axis = strtol(value, &end, 0); - if (end && !*end) { + if (axis >= 0 && axis < numAxes && end && !*end) { context->rotation.axisX = axis; } } value = GBAInputGetCustomValue(config, SDL_BINDING_BUTTON, "tiltAxisY", name); if (value) { axis = strtol(value, &end, 0); - if (end && !*end) { + if (axis >= 0 && axis < numAxes && end && !*end) { context->rotation.axisY = axis; } } value = GBAInputGetCustomValue(config, SDL_BINDING_BUTTON, "gyroAxisX", name); if (value) { axis = strtol(value, &end, 0); - if (end && !*end) { + if (axis >= 0 && axis < numAxes && end && !*end) { context->rotation.gyroX = axis; } } value = GBAInputGetCustomValue(config, SDL_BINDING_BUTTON, "gyroAxisY", name); if (value) { axis = strtol(value, &end, 0); - if (end && !*end) { + if (axis >= 0 && axis < numAxes && end && !*end) { context->rotation.gyroY = axis; } }