[gtk+/wip/baedert/box: 43/108] builderparser: Don't needlessly copy requested object names



commit 527e78bf38f011cb28940605dbd22c566642e94d
Author: Timm Bäder <mail baedert org>
Date:   Mon Sep 12 21:39:33 2016 +0200

    builderparser: Don't needlessly copy requested object names

 gtk/gtkbuilderparser.c  |   15 ++++-----------
 gtk/gtkbuilderprivate.h |    2 +-
 2 files changed, 5 insertions(+), 12 deletions(-)
---
diff --git a/gtk/gtkbuilderparser.c b/gtk/gtkbuilderparser.c
index 6fdef1c..b4a9e9c 100644
--- a/gtk/gtkbuilderparser.c
+++ b/gtk/gtkbuilderparser.c
@@ -221,11 +221,11 @@ static gboolean
 is_requested_object (const gchar *object,
                      ParserData  *data)
 {
-  GSList *l;
+  int i;
 
-  for (l = data->requested_objects; l; l = l->next)
+  for (i = 0; data->requested_objects[i]; ++i)
     {
-      if (g_strcmp0 (l->data, object) == 0)
+      if (g_strcmp0 (data->requested_objects[i], object) == 0)
         return TRUE;
     }
 
@@ -1238,14 +1238,8 @@ _gtk_builder_parser_parse_buffer (GtkBuilder   *builder,
 
   if (requested_objs)
     {
-      gint i;
-
       data.inside_requested_object = FALSE;
-      for (i = 0; requested_objs[i]; ++i)
-        {
-          data.requested_objects = g_slist_prepend (data.requested_objects,
-                                                    g_strdup (requested_objs[i]));
-        }
+      data.requested_objects = requested_objs;
     }
   else
     {
@@ -1295,7 +1289,6 @@ _gtk_builder_parser_parse_buffer (GtkBuilder   *builder,
   g_slist_free_full (data.stack, (GDestroyNotify)free_info);
   g_slist_free_full (data.custom_finalizers, (GDestroyNotify)free_subparser);
   g_slist_free (data.finalizers);
-  g_slist_free_full (data.requested_objects, g_free);
   g_free (data.domain);
   g_hash_table_destroy (data.object_ids);
   g_markup_parse_context_free (data.ctx);
diff --git a/gtk/gtkbuilderprivate.h b/gtk/gtkbuilderprivate.h
index 06b9a7a..f9c343f 100644
--- a/gtk/gtkbuilderprivate.h
+++ b/gtk/gtkbuilderprivate.h
@@ -118,7 +118,7 @@ typedef struct {
   GSList *finalizers;
   GSList *custom_finalizers;
 
-  GSList *requested_objects; /* NULL if all the objects are requested */
+  char **requested_objects; /* NULL if all the objects are requested */
   gboolean inside_requested_object;
   gint requested_object_level;
   gint cur_object_level;


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