don't g_strdup()/g_free() all parsed attributes and their values twice but
authorMichael Natterer <mitch@convergence.de>
Fri, 18 May 2001 12:38:32 +0000 (12:38 +0000)
committerMichael Natterer <mitch@src.gnome.org>
Fri, 18 May 2001 12:38:32 +0000 (12:38 +0000)
2001-05-18  Michael Natterer  <mitch@convergence.de>

* gmarkup.c: don't g_strdup()/g_free() all parsed attributes and
their values twice but simply copy the string pointers from the
GMarkupAttribute struct to the string arrays before passing them
to start_element().

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
glib/gmarkup.c
gmarkup.c

index 805621a..637a1b7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2001-05-18  Michael Natterer  <mitch@convergence.de>
+
+       * gmarkup.c: don't g_strdup()/g_free() all parsed attributes and
+       their values twice but simply copy the string pointers from the
+       GMarkupAttribute struct to the string arrays before passing them
+       to start_element().
+
 2001-05-18  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * gthread.c, gthread.h: Renamed g_thread_create to
index 805621a..637a1b7 100644 (file)
@@ -1,3 +1,10 @@
+2001-05-18  Michael Natterer  <mitch@convergence.de>
+
+       * gmarkup.c: don't g_strdup()/g_free() all parsed attributes and
+       their values twice but simply copy the string pointers from the
+       GMarkupAttribute struct to the string arrays before passing them
+       to start_element().
+
 2001-05-18  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * gthread.c, gthread.h: Renamed g_thread_create to
index 805621a..637a1b7 100644 (file)
@@ -1,3 +1,10 @@
+2001-05-18  Michael Natterer  <mitch@convergence.de>
+
+       * gmarkup.c: don't g_strdup()/g_free() all parsed attributes and
+       their values twice but simply copy the string pointers from the
+       GMarkupAttribute struct to the string arrays before passing them
+       to start_element().
+
 2001-05-18  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * gthread.c, gthread.h: Renamed g_thread_create to
index 805621a..637a1b7 100644 (file)
@@ -1,3 +1,10 @@
+2001-05-18  Michael Natterer  <mitch@convergence.de>
+
+       * gmarkup.c: don't g_strdup()/g_free() all parsed attributes and
+       their values twice but simply copy the string pointers from the
+       GMarkupAttribute struct to the string arrays before passing them
+       to start_element().
+
 2001-05-18  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * gthread.c, gthread.h: Renamed g_thread_create to
index 805621a..637a1b7 100644 (file)
@@ -1,3 +1,10 @@
+2001-05-18  Michael Natterer  <mitch@convergence.de>
+
+       * gmarkup.c: don't g_strdup()/g_free() all parsed attributes and
+       their values twice but simply copy the string pointers from the
+       GMarkupAttribute struct to the string arrays before passing them
+       to start_element().
+
 2001-05-18  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * gthread.c, gthread.h: Renamed g_thread_create to
index 805621a..637a1b7 100644 (file)
@@ -1,3 +1,10 @@
+2001-05-18  Michael Natterer  <mitch@convergence.de>
+
+       * gmarkup.c: don't g_strdup()/g_free() all parsed attributes and
+       their values twice but simply copy the string pointers from the
+       GMarkupAttribute struct to the string arrays before passing them
+       to start_element().
+
 2001-05-18  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * gthread.c, gthread.h: Renamed g_thread_create to
index 805621a..637a1b7 100644 (file)
@@ -1,3 +1,10 @@
+2001-05-18  Michael Natterer  <mitch@convergence.de>
+
+       * gmarkup.c: don't g_strdup()/g_free() all parsed attributes and
+       their values twice but simply copy the string pointers from the
+       GMarkupAttribute struct to the string arrays before passing them
+       to start_element().
+
 2001-05-18  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * gthread.c, gthread.h: Renamed g_thread_create to
index 805621a..637a1b7 100644 (file)
@@ -1,3 +1,10 @@
+2001-05-18  Michael Natterer  <mitch@convergence.de>
+
+       * gmarkup.c: don't g_strdup()/g_free() all parsed attributes and
+       their values twice but simply copy the string pointers from the
+       GMarkupAttribute struct to the string arrays before passing them
+       to start_element().
+
 2001-05-18  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
 
        * gthread.c, gthread.h: Renamed g_thread_create to
index 6fd5a10..87d6091 100644 (file)
@@ -253,10 +253,10 @@ attribute_list_to_arrays (GSList  *attributes,
       g_assert (i >= 0);
 
       if (namesp)
-        names[i] = g_strdup (attr->name);
+        names[i] = attr->name;
 
       if (valuesp)
-        values[i] = g_strdup (attr->value);
+        values[i] = attr->value;
 
       tmp_list = g_slist_next (tmp_list);
       --i;
@@ -1250,9 +1250,6 @@ g_markup_parse_context_parse (GMarkupParseContext *context,
                   /* Call user callback for element start */
                   start_name = current_element (context);
 
-                  /* this gratuituously copies the attr names/values
-                   * I guess
-                   */
                   attribute_list_to_arrays (context->attributes,
                                             &attr_names,
                                             &attr_values,
@@ -1267,9 +1264,12 @@ g_markup_parse_context_parse (GMarkupParseContext *context,
                                                         context->user_data,
                                                         &tmp_error);
 
-                  g_strfreev (attr_names);
-                  g_strfreev (attr_values);
-                  
+                 /* Free only the string arrays, as we didn't g_strdup() the attribute
+                  * list's strings
+                  */
+                  g_free (attr_names);
+                  g_free (attr_values);
+
                   /* Go ahead and free this. */
                   g_slist_foreach (context->attributes, (GFunc)attribute_free,
                                    NULL);
index 6fd5a10..87d6091 100644 (file)
--- a/gmarkup.c
+++ b/gmarkup.c
@@ -253,10 +253,10 @@ attribute_list_to_arrays (GSList  *attributes,
       g_assert (i >= 0);
 
       if (namesp)
-        names[i] = g_strdup (attr->name);
+        names[i] = attr->name;
 
       if (valuesp)
-        values[i] = g_strdup (attr->value);
+        values[i] = attr->value;
 
       tmp_list = g_slist_next (tmp_list);
       --i;
@@ -1250,9 +1250,6 @@ g_markup_parse_context_parse (GMarkupParseContext *context,
                   /* Call user callback for element start */
                   start_name = current_element (context);
 
-                  /* this gratuituously copies the attr names/values
-                   * I guess
-                   */
                   attribute_list_to_arrays (context->attributes,
                                             &attr_names,
                                             &attr_values,
@@ -1267,9 +1264,12 @@ g_markup_parse_context_parse (GMarkupParseContext *context,
                                                         context->user_data,
                                                         &tmp_error);
 
-                  g_strfreev (attr_names);
-                  g_strfreev (attr_values);
-                  
+                 /* Free only the string arrays, as we didn't g_strdup() the attribute
+                  * list's strings
+                  */
+                  g_free (attr_names);
+                  g_free (attr_values);
+
                   /* Go ahead and free this. */
                   g_slist_foreach (context->attributes, (GFunc)attribute_free,
                                    NULL);