--- xorg-server-1.12.1/dix/getevents.c 2012-03-31 09:45:56.000000000 +0700 +++ ./getevents.c 2012-04-26 18:08:22.200564000 +0700 @@ -1435,7 +1435,7 @@ if ((incr > 0 && delta < 0) || (incr < 0 && delta > 0)) b--; /* we're scrolling up or left → button 4 or 6 */ - while (fabs(delta) >= fabs(incr)) { + while ((fabs(delta) >= fabs(incr)) && ((num_events + 4) < max_events)) { int nev_tmp; if (delta > 0)