From bf60ffb49700da367f7f88983b042a88fef7219b Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Date: Sat, 25 Jul 2009 19:33:06 -0700 Subject: [PATCH] mieq: Protect from pDev=NULL in mieqEnqueue and mieqProcessInputEvents --- mi/mieq.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/mi/mieq.c b/mi/mieq.c index 213ad5b40..e3850d0df 100644 --- a/mi/mieq.c +++ b/mi/mieq.c @@ -263,7 +263,7 @@ mieqEnqueue(DeviceIntPtr pDev, xEvent *e) evt->event->u.keyButtonPointer.time = miEventQueue.lastEventTime; miEventQueue.lastEventTime = evt->event->u.keyButtonPointer.time; - miEventQueue.events[oldtail].pScreen = EnqueueScreen(pDev); + miEventQueue.events[oldtail].pScreen = pDev ? EnqueueScreen(pDev) : NULL; miEventQueue.events[oldtail].pDev = pDev; miEventQueue.lastMotion = isMotion; @@ -423,7 +423,7 @@ mieqProcessInputEvents(void) #endif type = event->u.u.type; - master = (!dev->isMaster && dev->u.master) ? dev->u.master : NULL; + master = (dev && !dev->isMaster && dev->u.master) ? dev->u.master : NULL; if (screenIsSaved == SCREEN_SAVER_ON) dixSaveScreens (serverClient, SCREEN_SAVER_OFF, ScreenSaverReset); @@ -438,7 +438,7 @@ mieqProcessInputEvents(void) /* Custom event handler */ handler = miEventQueue.handlers[type]; - if (screen != DequeueScreen(dev) && !handler) { + if (dev && DequeueScreen(dev) && screen != DequeueScreen(dev) && !handler) { /* Assumption - screen switching can only occur on motion events. */ DequeueScreen(dev) = screen; x = event->u.keyButtonPointer.rootX; @@ -464,10 +464,10 @@ mieqProcessInputEvents(void) * steal it. */ if (handler) { - handler(DequeueScreen(dev)->myNum, event, dev, nevents); + int screenNum = dev && DequeueScreen(dev) ? DequeueScreen(dev)->myNum : (screen ? screen->myNum : 0); + handler(screenNum, event, dev, nevents); if (master) - handler(DequeueScreen(master)->myNum, - masterEvents->event, master, nevents); + handler(screenNum, masterEvents->event, master, nevents); } else { /* process slave first, then master */