From 17590d92c509c0fabb59198bbe963c8bb6eb1d03 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Tue, 7 Aug 2012 03:51:16 +0000 Subject: [PATCH] fix potential read of garbage data. (brian wang report) SVN revision: 74955 --- src/lib/elm_interface_scrollable.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/lib/elm_interface_scrollable.c b/src/lib/elm_interface_scrollable.c index 782b453..347154f 100644 --- a/src/lib/elm_interface_scrollable.c +++ b/src/lib/elm_interface_scrollable.c @@ -2556,18 +2556,17 @@ _elm_scroll_hold_animator(void *data) if ((!sid->hold) && (!sid->freeze) && _elm_config->scroll_smooth_amount > 0.0) { - int src_index = 0, dst_index = 0; + int src_index = 0, dst_index = 0, num = 0; Evas_Coord x = 0, y = 0; int xsum = 0, ysum = 0; - int queue_size = 10; /* for event queue size */ +#define QUEUE_SIZE 10 /* for event queue size */ int i, count = 0; /* count for the real event number we have to * deal with */ - struct { Evas_Coord x, y; double t; - } pos[queue_size]; + } pos[QUEUE_SIZE]; double tdiff, tnow; double time_interval = _elm_config->scroll_smooth_time_interval; @@ -2577,7 +2576,7 @@ _elm_scroll_hold_animator(void *data) tdiff = sid->down.hist.est_timestamp_diff; tnow = ecore_time_get() - tdiff; - for (i = 0; i < queue_size; i++) + for (i = 0; i < QUEUE_SIZE; i++) { x = sid->down.history[i].x; y = sid->down.history[i].y; @@ -2594,11 +2593,12 @@ _elm_scroll_hold_animator(void *data) pos[i].x = x; pos[i].y = y; pos[i].t = tnow - sid->down.history[i].timestamp; + num++; } count = --i; - // we only deal with smooth scroll there is enough history - for (i = 0; i < queue_size; i++) + // we only deal with smooth scroll if there is enough history + for (i = 0; i < num; i++) { if (src_index > count) break; if (i == 0) -- 2.7.4