From f6bc2415ab47eab96dd2c12be3792eff4a0de709 Mon Sep 17 00:00:00 2001 From: Orivej Desh Date: Sun, 16 Dec 2018 17:03:47 +0000 Subject: [PATCH] Zero-fill new GtkTextIter iter_init_common() is used on uninitialized GtkTextIter, and since neither it nor its callers initiliaze its padding fields, they contain garbage. This is a problem for Go - which checks that structs passed to C functions do not contain pointers to Go-allocated memory - when the garbage happens to be such a pointer. Although Go zero-fills all GtkTextIter that it allocates, this does not help when GTK functions such as insert_pixbuf_or_widget_segment called for gtk_text_buffer_create_child_anchor copy garbage from their stack-allocated GtkTextIter into a clean iter. To work around this a GtkTextIter has to be discraded after use in text buffer anchor inserting functions: https://github.com/gotk3/gotk3/pull/307 --- gtk/gtktextiter.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gtk/gtktextiter.c b/gtk/gtktextiter.c index cecee72862..ee607919d4 100644 --- a/gtk/gtktextiter.c +++ b/gtk/gtktextiter.c @@ -246,6 +246,8 @@ iter_init_common (GtkTextIter *_iter, g_return_val_if_fail (iter != NULL, NULL); g_return_val_if_fail (tree != NULL, NULL); + memset (iter, 0, sizeof (GtkTextRealIter)); + iter->tree = tree; iter->chars_changed_stamp =