From: Yariv Barkan Date: Wed, 18 Dec 2019 21:03:19 +0000 (+0200) Subject: gtkgesturerotate: Fix a memory leak X-Git-Tag: archive/raspbian/4.4.1+ds1-2+rpi1^2~18^2~20^2~520^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=0604924c20f0174203ba0674e7a56f2cd7b91b10;p=gtk4.git gtkgesturerotate: Fix a memory leak On touchpads gtk_gesture_get_sequences() was called without a corresponding g_list_free(). The same was true for touchscreens if due to some reason only a single sequence was found. --- diff --git a/gtk/gtkgesturerotate.c b/gtk/gtkgesturerotate.c index 687589e571..07bf8157f9 100644 --- a/gtk/gtkgesturerotate.c +++ b/gtk/gtkgesturerotate.c @@ -82,21 +82,21 @@ _gtk_gesture_rotate_get_angle (GtkGestureRotate *rotate, gdouble x1, y1, x2, y2; GtkGesture *gesture; gdouble dx, dy; - GList *sequences; + GList *sequences = NULL; GdkTouchpadGesturePhase phase; + gboolean retval = FALSE; gesture = GTK_GESTURE (rotate); priv = gtk_gesture_rotate_get_instance_private (rotate); if (!gtk_gesture_is_recognized (gesture)) - return FALSE; + goto out; sequences = gtk_gesture_get_sequences (gesture); if (!sequences) - return FALSE; + goto out; last_event = gtk_gesture_get_last_event (gesture, sequences->data); - gdk_event_get_touchpad_gesture_phase (last_event, &phase); if (gdk_event_get_event_type (last_event) == GDK_TOUCHPAD_PINCH && @@ -109,11 +109,10 @@ _gtk_gesture_rotate_get_angle (GtkGestureRotate *rotate, else { if (!sequences->next) - return FALSE; + goto out; gtk_gesture_get_point (gesture, sequences->data, &x1, &y1); gtk_gesture_get_point (gesture, sequences->next->data, &x2, &y2); - g_list_free (sequences); dx = x1 - x2; dy = y1 - y2; @@ -127,7 +126,11 @@ _gtk_gesture_rotate_get_angle (GtkGestureRotate *rotate, *angle = fmod (*angle, 2 * G_PI); } - return TRUE; + retval = TRUE; + + out: + g_list_free (sequences); + return retval; } static gboolean