don't g_strdup()/g_free() all parsed attributes and their values twice but

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().
This commit is contained in:
Michael Natterer 2001-05-18 12:38:32 +00:00 committed by Michael Natterer
parent f2a9c8883d
commit 05f143a808
10 changed files with 72 additions and 16 deletions

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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);

View 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);