Fixed read after free bug in the game controller.

This commit is contained in:
Sam Lantinga 2013-03-07 15:17:06 -08:00
parent 69b8182419
commit 1dec4dd800

View file

@ -678,17 +678,18 @@ SDL_GameControllerAddMapping( const char *mappingString )
SDL_bool is_xinput_mapping = SDL_FALSE; SDL_bool is_xinput_mapping = SDL_FALSE;
#endif #endif
pchGUID = SDL_PrivateGetControllerGUIDFromMappingString( mappingString ); pchGUID = SDL_PrivateGetControllerGUIDFromMappingString( mappingString );
if (!pchGUID) return -1; if (!pchGUID) {
return -1;
}
#ifdef SDL_JOYSTICK_DINPUT #ifdef SDL_JOYSTICK_DINPUT
if ( !SDL_strcasecmp( pchGUID, "xinput" ) ) { if ( !SDL_strcasecmp( pchGUID, "xinput" ) ) {
is_xinput_mapping = SDL_TRUE; is_xinput_mapping = SDL_TRUE;
} }
#endif #endif
jGUID = SDL_JoystickGetGUIDFromString(pchGUID);
SDL_free(pchGUID); SDL_free(pchGUID);
jGUID = SDL_JoystickGetGUIDFromString(pchGUID);
pControllerMapping = SDL_PrivateGetControllerMappingForGUID(&jGUID); pControllerMapping = SDL_PrivateGetControllerMappingForGUID(&jGUID);
pchName = SDL_PrivateGetControllerNameFromMappingString( mappingString ); pchName = SDL_PrivateGetControllerNameFromMappingString( mappingString );