[gtk+] rendernode: Don't alloca() 8MB
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] rendernode: Don't alloca() 8MB
- Date: Sat, 3 Feb 2018 15:26:54 +0000 (UTC)
commit 83a687f8910a0ebc2f7413cdb79b14b02c0ec8bf
Author: Benjamin Otte <otte redhat com>
Date: Sat Feb 3 16:05:01 2018 +0100
rendernode: Don't alloca() 8MB
This happens when deserializing testcases and it really confuses
valgrind into thinking we're longjmp()ing.
And deserializing rendernodes is slow anyway, so who cares about a few
more malloc()s.
gsk/gskrendernodeimpl.c | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)
---
diff --git a/gsk/gskrendernodeimpl.c b/gsk/gskrendernodeimpl.c
index 3998288..c0b5358 100644
--- a/gsk/gskrendernodeimpl.c
+++ b/gsk/gskrendernodeimpl.c
@@ -2055,13 +2055,14 @@ gsk_container_node_deserialize (GVariant *variant,
gsize i, n_children;
guint32 child_type;
GVariant *child_variant;
+ GskRenderNode **children;
if (!check_variant_type (variant, GSK_CONTAINER_NODE_VARIANT_TYPE, error))
return NULL;
i = 0;
n_children = g_variant_iter_init (&iter, variant);
- GskRenderNode **children = g_newa (GskRenderNode *, n_children);
+ children = g_new (GskRenderNode *, n_children);
while (g_variant_iter_loop (&iter, "(uv)", &child_type, &child_variant))
{
@@ -2071,6 +2072,7 @@ gsk_container_node_deserialize (GVariant *variant,
guint j;
for (j = 0; j < i; j++)
gsk_render_node_unref (children[j]);
+ g_free (children);
g_variant_unref (child_variant);
return NULL;
}
@@ -2081,6 +2083,7 @@ gsk_container_node_deserialize (GVariant *variant,
for (i = 0; i < n_children; i++)
gsk_render_node_unref (children[i]);
+ g_free (children);
return result;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]