diff options
| author | Gaël Bonithon <gael@xfce.org> | 2021-09-12 18:00:24 +0200 |
|---|---|---|
| committer | Gaël Bonithon <gael@xfce.org> | 2021-09-15 07:37:46 +0200 |
| commit | 599ab80c635d3471eda08f75702a321c091f5788 (patch) | |
| tree | 6ab40619108367dc7c59c3d372f7fb1c323162f9 | |
| parent | 1382e54ef66082760170400f030890ee93f79d73 (diff) | |
| download | gtk+-599ab80c635d3471eda08f75702a321c091f5788.tar.gz | |
GtkClipboard: Reset a source id to prevent double free
Fixes #4253.
| -rw-r--r-- | gtk/gtkclipboard.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/gtk/gtkclipboard.c b/gtk/gtkclipboard.c index c34c8024bf..b0caf16fdf 100644 --- a/gtk/gtkclipboard.c +++ b/gtk/gtkclipboard.c @@ -2036,7 +2036,8 @@ static gboolean gtk_clipboard_store_timeout (GtkClipboard *clipboard) { g_main_loop_quit (clipboard->store_loop); - + clipboard->store_timeout = 0; + return G_SOURCE_REMOVE; } @@ -2179,8 +2180,12 @@ gtk_clipboard_real_store (GtkClipboard *clipboard) g_main_loop_unref (clipboard->store_loop); clipboard->store_loop = NULL; - g_source_remove (clipboard->store_timeout); - clipboard->store_timeout = 0; + if (clipboard->store_timeout != 0) + { + g_source_remove (clipboard->store_timeout); + clipboard->store_timeout = 0; + } + g_signal_handler_disconnect (clipboard_widget, clipboard->notify_signal_id); clipboard->notify_signal_id = 0; |
