From f5b8ccff4b86c9931d34662cc08c7637573b5efd Mon Sep 17 00:00:00 2001 From: Themaister Date: Wed, 28 May 2014 21:05:15 +0200 Subject: [PATCH] Avoid set_controller_port unless we use something other than JOYPAD. Some cores do not properly range check. Avoid needlessly breaking. --- retroarch.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/retroarch.c b/retroarch.c index 30d93be0c9..22da468fd5 100644 --- a/retroarch.c +++ b/retroarch.c @@ -1271,11 +1271,17 @@ static void init_controllers(void) } if (device == RETRO_DEVICE_NONE) + { RARCH_LOG("Disconnecting device from port %u.\n", i + 1); - else + pretro_set_controller_port_device(i, device); + } + else if (device != RETRO_DEVICE_JOYPAD) + { + // Some cores do not properly range check port argument. + // This is broken behavior ofc, but avoid breaking cores needlessly. RARCH_LOG("Connecting %s (ID: %u) to port %u.\n", ident, device, i + 1); - - pretro_set_controller_port_device(i, device); + pretro_set_controller_port_device(i, device); + } } }