[glib/halfline/debug-metrics: 9/22] gsignal: Plug g_signal_connect_object leak
- From: Ray Strode <halfline src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/halfline/debug-metrics: 9/22] gsignal: Plug g_signal_connect_object leak
- Date: Wed, 7 Jul 2021 03:19:01 +0000 (UTC)
commit fcae58be217e1158eb2734d219f48b88b3cc7eb8
Author: Ray Strode <rstrode redhat com>
Date: Tue Oct 13 09:24:02 2020 -0400
gsignal: Plug g_signal_connect_object leak
commit 916297be799ee001b4a214cc52c3b960bb0b5deb added a hash table
to provide constant time lookups of signal handlers.
Unfortunately, that commit neglected to remove handlers from
g_signal_connect_object calls from the hash table that are
disconnected implicitly when the associated object goes away.
This commit addresses that bug by changing the closure invalidate
handler associated with the signal connection to properly remove the
handler from the hash table.
gobject/gsignal.c | 1 +
1 file changed, 1 insertion(+)
---
diff --git a/gobject/gsignal.c b/gobject/gsignal.c
index b22dfcca8..fa7d9b274 100644
--- a/gobject/gsignal.c
+++ b/gobject/gsignal.c
@@ -3808,6 +3808,7 @@ invalid_closure_notify (gpointer instance,
g_assert (handler != NULL);
g_assert (handler->closure == closure);
+ g_hash_table_remove (g_handlers, handler);
handler->sequential_number = 0;
handler->block_count = 1;
handler_unref_R (signal_id, instance, handler);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]