diff options
author | Adel Gadllah <adel.gadllah@gmail.com> | 2011-10-02 09:52:16 +0200 |
---|---|---|
committer | Adel Gadllah <adel.gadllah@gmail.com> | 2011-10-03 14:11:43 +0200 |
commit | 25e65dc1b59527badfef052f988639c1ef22f22d (patch) | |
tree | d58d0490ea311171093dc8f224fd006a7abc1e41 /gdk | |
parent | 2790a3d81a46ef4a3a2e90317ec2dc379f6cd428 (diff) | |
download | gtk+-25e65dc1b59527badfef052f988639c1ef22f22d.tar.gz |
gdk: Plug leak in gdk_display_pointer_is_grabbed
gdk_x11_device_manager_core_list_devices returns a new allocated
list, which has to be freed.
valgrind output:
==18686== 160,176 (80,088 direct, 80,088 indirect) bytes in 3,337 blocks are definitely lost in loss record 25,347 of 25,378
==18686== at 0x4C256DD: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==18686== by 0x6CD7752: g_malloc (in /lib64/libglib-2.0.so.0.3000.0)
==18686== by 0x6CEE2B6: g_slice_alloc (in /lib64/libglib-2.0.so.0.3000.0)
==18686== by 0x6CCB37D: g_list_prepend (in /lib64/libglib-2.0.so.0.3000.0)
==18686== by 0x654CADA: gdk_x11_device_manager_core_list_devices (gdkdevicemanager-core-x11.c:836)
==18686== by 0x6531489: gdk_display_pointer_is_grabbed (gdkdisplay.c:1270)
==18686== by 0x5162E1E: filter_func (ui.c:140)
==18686== by 0x6558B50: gdk_event_apply_filters (gdkeventsource.c:83)
==18686== by 0x6558CB3: _gdk_x11_display_queue_events (gdkeventsource.c:197)
==18686== by 0x6530680: gdk_display_get_event (gdkdisplay.c:311)
==18686== by 0x65589F1: gdk_event_source_dispatch (gdkeventsource.c:356)
==18686== by 0x6CD0A0E: g_main_context_dispatch (in /lib64/libglib-2.0.so.0.3000.0)
https://bugzilla.gnome.org/show_bug.cgi?id=660676
Diffstat (limited to 'gdk')
-rw-r--r-- | gdk/gdkdisplay.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/gdk/gdkdisplay.c b/gdk/gdkdisplay.c index cdfc35655c..bf50c84cf0 100644 --- a/gdk/gdkdisplay.c +++ b/gdk/gdkdisplay.c @@ -1275,9 +1275,14 @@ gdk_display_pointer_is_grabbed (GdkDisplay *display) if (gdk_device_get_source (device) == GDK_SOURCE_MOUSE && gdk_display_device_is_grabbed (display, device)) - return TRUE; + { + g_list_free (devices); + return TRUE; + } } + g_list_free (devices); + return FALSE; } |