--- a/gntmain.c Sun May 19 02:50:51 2019 -0400
+++ b/gntmain.c Tue May 21 01:20:54 2019 +0000
@@ -103,7 +103,7 @@
#define HOLDING_ESCAPE (escape_stuff.timer != 0)
@@ -270,7 +270,7 @@
/* XXX: it throws an error after evey io_invoke, I have no idea why */
- int id = GPOINTER_TO_INT(data);
+ guint id = GPOINTER_TO_UINT(data); g_io_channel_unref(source);
@@ -438,7 +438,7 @@
channel = g_io_channel_win32_new_fd(STDIN_FILENO);
@@ -457,9 +457,9 @@
(G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI),
- channel_error_callback = g_io_add_watch_full(channel, G_PRIORITY_HIGH,
- io_invoke_error, GINT_TO_POINTER(result), NULL);
+ channel_error_callback = g_io_add_watch_full( + channel, G_PRIORITY_HIGH, (G_IO_NVAL), io_invoke_error, + GUINT_TO_POINTER(result), NULL); g_io_channel_unref(channel);
@@ -776,8 +776,12 @@
/* Prevent io_invoke() from being called after wm is destroyed */
- g_source_remove(channel_error_callback);
- g_source_remove(channel_read_callback);
+ if (channel_error_callback) { + g_source_remove(channel_error_callback); + if (channel_read_callback) { + g_source_remove(channel_read_callback); channel_error_callback = 0;
channel_read_callback = 0;
@@ -907,6 +911,7 @@
g_source_remove(channel_read_callback);
+ channel_read_callback = 0; gnt_wm_set_keypress_mode(wm, GNT_KP_MODE_WAIT_ON_CHILD);
g_child_watch_add(pid, reap_child, cp);
--- a/gnttree.c Sun May 19 02:50:51 2019 -0400
+++ b/gnttree.c Tue May 21 01:20:54 2019 +0000
@@ -90,7 +90,7 @@
gboolean show_separator; /* Whether to show column separators */
gboolean (*search_func)(GntTree *tree, gpointer key, const char *search, const char *current);
--- a/gntwidget.c Sun May 19 02:50:51 2019 -0400
+++ b/gntwidget.c Tue May 21 01:20:54 2019 +0000
@@ -123,7 +123,9 @@
GntWidgetPrivate *priv = gnt_widget_get_instance_private(self);
g_signal_emit(self, signals[SIG_DESTROY], 0);
- g_source_remove(priv->queue_update);
+ if (priv->queue_update) { + g_source_remove(priv->queue_update); G_OBJECT_CLASS(gnt_widget_parent_class)->dispose(obj);
--- a/gntwm.c Sun May 19 02:50:51 2019 -0400
+++ b/gntwm.c Tue May 21 01:20:54 2019 +0000
@@ -144,7 +144,7 @@
static void ensure_normal_mode(GntWMPrivate *priv);
static gboolean write_already(gpointer data);
-static int write_timeout;
+static guint write_timeout; static time_t last_active_time;
static gboolean idle_update;
static GList *act = NULL; /* list of WS with unseen activitiy */
@@ -1505,6 +1505,8 @@
g_list_free_full(priv->workspaces, g_object_unref);
+ g_clear_pointer(&priv->loop, g_main_loop_unref); @@ -2292,7 +2294,6 @@
- g_source_remove(write_timeout);
--- a/test/multiwin.c Sun May 19 02:50:51 2019 -0400
+++ b/test/multiwin.c Tue May 21 01:20:54 2019 +0000
@@ -21,6 +21,8 @@
GntWidget *hbox, *tree, *box2;
+ gchar buf[(430 - 110) * 4]; /* 3 digits + NUL each */ hbox = gnt_box_new(FALSE, TRUE);
box2 = gnt_box_new(FALSE, TRUE);
@@ -65,12 +67,16 @@
gnt_tree_add_row_after(GNT_TREE(tree), "6", gnt_tree_create_row(GNT_TREE(tree), "6", " long text", "a2"), "4", NULL);
- for (i = 110; i < 430; i++)
- s = g_strdup_printf("%d", i); /* XXX: yes, leaking */
- gnt_tree_add_row_after(GNT_TREE(tree), s, gnt_tree_create_row(GNT_TREE(tree), s, " long text", "a2"), "4", NULL);
+ for (i = 110; i < 430; i++) { + gchar *s = buf + (i - 110) * 4; + gint n = sizeof(buf) - (i - 110) * 4; + if (g_snprintf(s, n, "%d", i) > n) { + g_assert_not_reached(); + gnt_tree_add_row_after(GNT_TREE(tree), s, + gnt_tree_create_row(GNT_TREE(tree), s, gnt_tree_set_row_flags(GNT_TREE(tree), "e", GNT_TEXT_FLAG_DIM);