From 549e7b0de62b9f31825f0c24f41cfa7eaad97360 Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Wed, 8 Oct 2014 20:37:42 +0200 Subject: [PATCH] garray: initialize allocated size in g_byte_array_new_take() Internal allocation size (array->alloc) was being kept to 0 when a new GByteArray was created from an already existing heap-allocated buffer. Among other things, this was making g_byte_array_set_size() fully clear all the buffer contents (not just the newly allocated memory) when G_DEBUG=gc-friendly was being used... if (G_UNLIKELY (g_mem_gc_friendly)) memset (array->data + array->alloc, 0, want_alloc - array->alloc); https://bugzilla.gnome.org/show_bug.cgi?id=738170 --- glib/garray.c | 1 + 1 file changed, 1 insertion(+) diff --git a/glib/garray.c b/glib/garray.c index 14e046ff9..8a94720f7 100644 --- a/glib/garray.c +++ b/glib/garray.c @@ -1589,6 +1589,7 @@ g_byte_array_new_take (guint8 *data, real->data = data; real->len = len; + real->alloc = len; return array; }