From a406f6bfeaa46e3236f7ab46813fe6c30b936a35 Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Fri, 4 Aug 2006 12:40:19 +0300 Subject: [PATCH] mieq: don't leak events free all events posted through mieqEnqueue. --- mi/mieq.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mi/mieq.c b/mi/mieq.c index 8dbf166a6..0d9dcb8b4 100644 --- a/mi/mieq.c +++ b/mi/mieq.c @@ -124,6 +124,7 @@ mieqEnqueue (xEvent *e) if (e->u.u.type == DeviceValuator) { if (laste->nevents >= 6) { ErrorF("mieqEnqueue: more than six valuator events; dropping.\n"); + free(e); return; } if (oldtail == miEventQueue.head || @@ -133,6 +134,7 @@ mieqEnqueue (xEvent *e) ((lastkbp->deviceid & DEVICE_BITS) != (v->deviceid & DEVICE_BITS))) { ErrorF("mieqEnequeue: out-of-order valuator event; dropping.\n"); + free(e); return; } laste->event[laste->nevents++] = *e; @@ -159,6 +161,7 @@ mieqEnqueue (xEvent *e) /* Toss events which come in late */ if (newtail == miEventQueue.head) { ErrorF("tossed event which came in late\n"); + free(e); return; } miEventQueue.tail = newtail; @@ -235,5 +238,7 @@ void mieqProcessInputEvents () ++miEventQueue.head; (*e->pDev->public.processInputProc)(e->event, e->pDev, e->nevents); } + + free(e->event); } }