From c28a87053b36628baa8a7befb18c52d90579637c Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Wed, 4 Sep 2024 13:13:01 +0200 Subject: [PATCH] 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 (cherry picked from commit 48cee2fd22d1d84f5f4ee0b316bd3ad7359c015f) --- dix/devices.c | 3 +-- dix/events.c | 12 ++++-------- dix/gestures.c | 6 ++---- dix/grabs.c | 3 ++- 4 files changed, 9 insertions(+), 15 deletions(-) diff --git a/dix/devices.c b/dix/devices.c index 4d853298f..491a012df 100644 --- a/dix/devices.c +++ b/dix/devices.c @@ -1033,8 +1033,7 @@ CloseDevice(DeviceIntPtr dev) } } - if (dev->deviceGrab.grab) - FreeGrab(dev->deviceGrab.grab); + FreeGrab(dev->deviceGrab.grab); free(dev->deviceGrab.sync.event); free(dev->config_info); /* Allocated in xf86ActivateDevice. */ free(dev->last.scroll); diff --git a/dix/events.c b/dix/events.c index 4a51439dd..4275b8855 100644 --- a/dix/events.c +++ b/dix/events.c @@ -1525,8 +1525,7 @@ UpdateTouchesForGrab(DeviceIntPtr mouse) listener->window = grab->window; listener->state = TOUCH_LISTENER_IS_OWNER; - if (listener->grab) - FreeGrab(listener->grab); + FreeGrab(listener->grab); listener->grab = AllocGrab(grab); } } @@ -1566,8 +1565,7 @@ UpdateGesturesForGrab(DeviceIntPtr mouse) listener->listener = grab->resource; listener->window = grab->window; - if (listener->grab) - FreeGrab(listener->grab); + FreeGrab(listener->grab); listener->grab = AllocGrab(grab); } } @@ -1625,8 +1623,7 @@ ActivatePointerGrab(DeviceIntPtr mouse, GrabPtr grab, UpdateGesturesForGrab(mouse); CheckGrabForSyncs(mouse, (Bool) grab->pointerMode, (Bool) grab->keyboardMode); - if (oldgrab) - FreeGrab(oldgrab); + FreeGrab(oldgrab); } /** @@ -1745,8 +1742,7 @@ ActivateKeyboardGrab(DeviceIntPtr keybd, GrabPtr grab, TimeStamp time, grabinfo->implicitGrab = passive & ImplicitGrabMask; CheckGrabForSyncs(keybd, (Bool) grab->keyboardMode, (Bool) grab->pointerMode); - if (oldgrab) - FreeGrab(oldgrab); + FreeGrab(oldgrab); } /** diff --git a/dix/gestures.c b/dix/gestures.c index 60eba9a4c..ea8d13d47 100644 --- a/dix/gestures.c +++ b/dix/gestures.c @@ -114,10 +114,8 @@ void GestureEndGesture(GestureInfoPtr gi) { if (gi->has_listener) { - if (gi->listener.grab) { - FreeGrab(gi->listener.grab); - gi->listener.grab = NULL; - } + FreeGrab(gi->listener.grab); + gi->listener.grab = NULL; gi->listener.listener = 0; gi->has_listener = FALSE; } diff --git a/dix/grabs.c b/dix/grabs.c index 66c498cd3..f72deb4c3 100644 --- a/dix/grabs.c +++ b/dix/grabs.c @@ -254,7 +254,8 @@ CreateGrab(int client, DeviceIntPtr device, DeviceIntPtr modDevice, void FreeGrab(GrabPtr pGrab) { - BUG_RETURN(!pGrab); + if (!pGrab) + return; free(pGrab->modifiersDetail.pMask); free(pGrab->detail.pMask);