Fixed crash if allocation for touch device failed.

If the allocation of an SDL_Touch failed, the number of touch devices was still
increased. Later access of the SDL_Touch would then have dereferenced the NULL.
This commit is contained in:
Philipp Wiesemann 2015-06-12 21:10:31 +02:00
parent 714687427a
commit d8c2b36c21

View file

@ -145,13 +145,16 @@ SDL_AddTouch(SDL_TouchID touchID, const char *name)
} }
SDL_touchDevices = touchDevices; SDL_touchDevices = touchDevices;
index = SDL_num_touch++; index = SDL_num_touch;
SDL_touchDevices[index] = (SDL_Touch *) SDL_malloc(sizeof(*SDL_touchDevices[index])); SDL_touchDevices[index] = (SDL_Touch *) SDL_malloc(sizeof(*SDL_touchDevices[index]));
if (!SDL_touchDevices[index]) { if (!SDL_touchDevices[index]) {
return SDL_OutOfMemory(); return SDL_OutOfMemory();
} }
/* Added touch to list */
++SDL_num_touch;
/* we're setting the touch properties */ /* we're setting the touch properties */
SDL_touchDevices[index]->id = touchID; SDL_touchDevices[index]->id = touchID;
SDL_touchDevices[index]->num_fingers = 0; SDL_touchDevices[index]->num_fingers = 0;