[gtk: 1/2] Zero-fill new GtkTextIter



commit 3ec2d5fa382534a7021baa05163011e0401ace56
Author: Orivej Desh <orivej gmx fr>
Date:   Sun Dec 16 17:03:47 2018 +0000

    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 e16f3a5796..be31d084d0 100644
--- a/gtk/gtktextiter.c
+++ b/gtk/gtktextiter.c
@@ -245,6 +245,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 =


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]