Browse Source

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.
Philipp Wiesemann 10 years ago
parent
commit
d8c2b36c21
1 changed files with 4 additions and 1 deletions
  1. 4 1
      src/events/SDL_touch.c

+ 4 - 1
src/events/SDL_touch.c

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