diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2014-10-08 20:37:42 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2014-10-08 20:51:47 +0200 |
commit | 549e7b0de62b9f31825f0c24f41cfa7eaad97360 (patch) | |
tree | d76ba6078b1cb10b9a0dea5cea48061a0122d924 | |
parent | de82b641b05ee32812d945a9d4ecd1c1bbc3401e (diff) | |
download | glib-549e7b0de62b9f31825f0c24f41cfa7eaad97360.tar.gz |
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
-rw-r--r-- | glib/garray.c | 1 |
1 files changed, 1 insertions, 0 deletions
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; } |