[evolution-data-server/gnome-3-22] Bug 773363 - Do not use alloca() in camel-folder-thread.c



commit 1bd629d5802c53624f57f324177fe0dd7aec284a
Author: Glen Whitney <gwhitneycom1 pobox com>
Date:   Mon Oct 24 21:30:18 2016 +0200

    Bug 773363 - Do not use alloca() in camel-folder-thread.c

 camel/camel-folder-thread.c |   19 +++++++++----------
 1 files changed, 9 insertions(+), 10 deletions(-)
---
diff --git a/camel/camel-folder-thread.c b/camel/camel-folder-thread.c
index 642a197..af28322 100644
--- a/camel/camel-folder-thread.c
+++ b/camel/camel-folder-thread.c
@@ -360,12 +360,7 @@ dump_tree_rec (struct _tree_info *info,
                CamelFolderThreadNode *c,
                gint depth)
 {
-       gchar *p;
-       gint count = 0;
-
-       p = alloca (depth * 2 + 1);
-       memset (p, ' ', depth * 2);
-       p[depth * 2] = 0;
+       gint count = 0, indent = depth * 2;
 
        while (c) {
                if (g_hash_table_lookup (info->visited, c)) {
@@ -375,14 +370,14 @@ dump_tree_rec (struct _tree_info *info,
                }
                if (c->message) {
                        printf (
-                               "%s %p Subject: %s <%08x%08x>\n",
-                               p, (gpointer) c,
+                               "%*s %p Subject: %s <%08x%08x>\n",
+                               indent, "", (gpointer) c,
                                camel_message_info_get_subject (c->message),
                                camel_message_info_get_message_id (c->message)->id.part.hi,
                                camel_message_info_get_message_id (c->message)->id.part.lo);
                        count += 1;
                } else {
-                       printf ("%s %p <empty>\n", p, (gpointer) c);
+                       printf ("%*s %p <empty>\n", indent, "", (gpointer) c);
                }
                if (c->child)
                        count += dump_tree_rec (info, c->child, depth + 1);
@@ -441,7 +436,9 @@ sort_thread (CamelFolderThreadNode **cp)
        }
        if (size < 2)
                return;
-       carray = alloca (size * sizeof (CamelFolderThreadNode *));
+
+       carray = g_new (CamelFolderThreadNode *, size);
+
        c = *cp;
        size = 0;
        while (c) {
@@ -461,6 +458,8 @@ sort_thread (CamelFolderThreadNode **cp)
                size--;
        } while (size >= 0);
        *cp = head;
+
+       g_free (carray);
 }
 
 static guint


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