Browse Source

Fixed crash if allocating memory for mouse clicks failed.

Philipp Wiesemann 8 years ago
parent
commit
7b23eef3b0
1 changed files with 18 additions and 14 deletions
  1. 18 14
      src/events/SDL_mouse.c

+ 18 - 14
src/events/SDL_mouse.c

@@ -358,22 +358,26 @@ SDL_PrivateSendMouseButton(SDL_Window * window, SDL_MouseID mouseID, Uint8 state
 
     if (clicks < 0) {
         SDL_MouseClickState *clickstate = GetMouseClickState(mouse, button);
-        if (state == SDL_PRESSED) {
-            Uint32 now = SDL_GetTicks();
-
-            if (SDL_TICKS_PASSED(now, clickstate->last_timestamp + SDL_double_click_time) ||
-                SDL_abs(mouse->x - clickstate->last_x) > SDL_double_click_radius ||
-                SDL_abs(mouse->y - clickstate->last_y) > SDL_double_click_radius) {
-                clickstate->click_count = 0;
-            }
-            clickstate->last_timestamp = now;
-            clickstate->last_x = mouse->x;
-            clickstate->last_y = mouse->y;
-            if (clickstate->click_count < 255) {
-                ++clickstate->click_count;
+        if (clickstate) {
+            if (state == SDL_PRESSED) {
+                Uint32 now = SDL_GetTicks();
+
+                if (SDL_TICKS_PASSED(now, clickstate->last_timestamp + SDL_double_click_time) ||
+                    SDL_abs(mouse->x - clickstate->last_x) > SDL_double_click_radius ||
+                    SDL_abs(mouse->y - clickstate->last_y) > SDL_double_click_radius) {
+                    clickstate->click_count = 0;
+                }
+                clickstate->last_timestamp = now;
+                clickstate->last_x = mouse->x;
+                clickstate->last_y = mouse->y;
+                if (clickstate->click_count < 255) {
+                    ++clickstate->click_count;
+                }
             }
+            clicks = clickstate->click_count;
+        } else {
+            clicks = 1;
         }
-        clicks = clickstate->click_count;
     }
 
     /* Post the event, if desired */