dix: make FreeGrab() NULL tolerant

Allow NULL parameters to be passed to FreeGrab(), so callers don't all
need to check on their own anymore.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
Enrico Weigelt, metux IT consult 2024-09-04 13:13:01 +02:00
parent 33958af5b5
commit b96fc1934e
4 changed files with 9 additions and 15 deletions

View File

@ -1034,8 +1034,7 @@ CloseDevice(DeviceIntPtr dev)
} }
} }
if (dev->deviceGrab.grab) FreeGrab(dev->deviceGrab.grab);
FreeGrab(dev->deviceGrab.grab);
free(dev->deviceGrab.sync.event); free(dev->deviceGrab.sync.event);
free(dev->config_info); /* Allocated in xf86ActivateDevice. */ free(dev->config_info); /* Allocated in xf86ActivateDevice. */
free(dev->last.scroll); free(dev->last.scroll);

View File

@ -1510,8 +1510,7 @@ UpdateTouchesForGrab(DeviceIntPtr mouse)
listener->window = grab->window; listener->window = grab->window;
listener->state = TOUCH_LISTENER_IS_OWNER; listener->state = TOUCH_LISTENER_IS_OWNER;
if (listener->grab) FreeGrab(listener->grab);
FreeGrab(listener->grab);
listener->grab = AllocGrab(grab); listener->grab = AllocGrab(grab);
} }
} }
@ -1551,8 +1550,7 @@ UpdateGesturesForGrab(DeviceIntPtr mouse)
listener->listener = grab->resource; listener->listener = grab->resource;
listener->window = grab->window; listener->window = grab->window;
if (listener->grab) FreeGrab(listener->grab);
FreeGrab(listener->grab);
listener->grab = AllocGrab(grab); listener->grab = AllocGrab(grab);
} }
} }
@ -1610,8 +1608,7 @@ ActivatePointerGrab(DeviceIntPtr mouse, GrabPtr grab,
UpdateGesturesForGrab(mouse); UpdateGesturesForGrab(mouse);
CheckGrabForSyncs(mouse, (Bool) grab->pointerMode, CheckGrabForSyncs(mouse, (Bool) grab->pointerMode,
(Bool) grab->keyboardMode); (Bool) grab->keyboardMode);
if (oldgrab) FreeGrab(oldgrab);
FreeGrab(oldgrab);
} }
/** /**
@ -1730,8 +1727,7 @@ ActivateKeyboardGrab(DeviceIntPtr keybd, GrabPtr grab, TimeStamp time,
grabinfo->implicitGrab = passive & ImplicitGrabMask; grabinfo->implicitGrab = passive & ImplicitGrabMask;
CheckGrabForSyncs(keybd, (Bool) grab->keyboardMode, CheckGrabForSyncs(keybd, (Bool) grab->keyboardMode,
(Bool) grab->pointerMode); (Bool) grab->pointerMode);
if (oldgrab) FreeGrab(oldgrab);
FreeGrab(oldgrab);
} }
/** /**

View File

@ -114,10 +114,8 @@ void
GestureEndGesture(GestureInfoPtr gi) GestureEndGesture(GestureInfoPtr gi)
{ {
if (gi->has_listener) { if (gi->has_listener) {
if (gi->listener.grab) { FreeGrab(gi->listener.grab);
FreeGrab(gi->listener.grab); gi->listener.grab = NULL;
gi->listener.grab = NULL;
}
gi->listener.listener = 0; gi->listener.listener = 0;
gi->has_listener = FALSE; gi->has_listener = FALSE;
} }

View File

@ -255,7 +255,8 @@ CreateGrab(int client, DeviceIntPtr device, DeviceIntPtr modDevice,
void void
FreeGrab(GrabPtr pGrab) FreeGrab(GrabPtr pGrab)
{ {
BUG_RETURN(!pGrab); if (!pGrab)
return;
free(pGrab->modifiersDetail.pMask); free(pGrab->modifiersDetail.pMask);
free(pGrab->detail.pMask); free(pGrab->detail.pMask);