From 7b23eef3b0936d7fb060129bfa439c730ea5d4e0 Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Fri, 30 Sep 2016 23:30:54 +0200 Subject: [PATCH] Fixed crash if allocating memory for mouse clicks failed. --- src/events/SDL_mouse.c | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/src/events/SDL_mouse.c b/src/events/SDL_mouse.c index d54519c121be5..f343c52143cb9 100644 --- a/src/events/SDL_mouse.c +++ b/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 */