summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGaël Bonithon <gael@xfce.org>2021-09-12 18:00:24 +0200
committerGaël Bonithon <gael@xfce.org>2021-09-15 07:37:46 +0200
commit599ab80c635d3471eda08f75702a321c091f5788 (patch)
tree6ab40619108367dc7c59c3d372f7fb1c323162f9
parent1382e54ef66082760170400f030890ee93f79d73 (diff)
downloadgtk+-599ab80c635d3471eda08f75702a321c091f5788.tar.gz
GtkClipboard: Reset a source id to prevent double free
Fixes #4253.
-rw-r--r--gtk/gtkclipboard.c11
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;