summaryrefslogtreecommitdiff
path: root/atspi/atspi-event-listener.c
diff options
context:
space:
mode:
authorMike Gorse <mgorse@suse.com>2021-04-21 16:37:14 -0500
committerMike Gorse <mgorse@suse.com>2021-04-21 16:37:14 -0500
commit0b551954386543e97370d97ea1b78dd096edb14e (patch)
treeb115a4aa8a532a0122b1a3537005a85cbf14d3af /atspi/atspi-event-listener.c
parent303ff15ea793189e1e8855b32df967e0a05fe08c (diff)
downloadat-spi2-core-0b551954386543e97370d97ea1b78dd096edb14e.tar.gz
Fix double free when removing event listeners
Fixes https://gitlab.gnome.org/GNOME/at-spi2-core/issues/35
Diffstat (limited to 'atspi/atspi-event-listener.c')
-rw-r--r--atspi/atspi-event-listener.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/atspi/atspi-event-listener.c b/atspi/atspi-event-listener.c
index ca6828fe..5455b589 100644
--- a/atspi/atspi-event-listener.c
+++ b/atspi/atspi-event-listener.c
@@ -798,7 +798,10 @@ atspi_event_listener_deregister_from_callback (AtspiEventListenerCB callback,
DBusMessage *message, *reply;
l = g_list_next (l);
if (in_send)
- pending_removals = g_list_append (pending_removals, e);
+ {
+ pending_removals = g_list_remove (pending_removals, e);
+ pending_removals = g_list_append (pending_removals, e);
+ }
else
event_listeners = g_list_remove (event_listeners, e);
for (i = 0; i < matchrule_array->len; i++)