Bug 518160 - replace two g_strdup_printf calls in GBookmarkFile

2008-03-22  Emmanuele Bassi  <ebassi@gnome.org>

	Bug 518160 - replace two g_strdup_printf calls in GBookmarkFile

	* glib/gbookmarkfile.c (is_element_full): Compare the fragments
	instead of building two strings; this avoids two g_strdup_printf()
	per namespaced element enountered. (#518160, Felix Riemann)

svn path=/trunk/; revision=6751
This commit is contained in:
Emmanuele Bassi 2008-03-22 17:01:52 +00:00 committed by Emmanuele Bassi
parent 9e9b2fbdd5
commit c14b3842f2
2 changed files with 14 additions and 9 deletions

View File

@ -1,6 +1,14 @@
2008-03-22 Emmanuele Bassi <ebassi@gnome.org>
Bug 518160 - replace two g_strdup_printf calls in GBookmarkFile
* glib/gbookmarkfile.c (is_element_full): Compare the fragments
instead of building two strings; this avoids two g_strdup_printf()
per namespaced element enountered. (#518160, Felix Riemann)
2008-03-20 Alexander Larsson <alexl@redhat.com> 2008-03-20 Alexander Larsson <alexl@redhat.com>
* configure.in: * configure.in:
Final fixes for struct statfs.f_fstypename checks (OpenBSD). (#521045) Final fixes for struct statfs.f_fstypename checks (OpenBSD). (#521045)
Patch from ephraim_owns@hotmail.com Patch from ephraim_owns@hotmail.com

View File

@ -998,7 +998,7 @@ is_element_full (ParseData *parse_data,
const gchar *element, const gchar *element,
const gchar sep) const gchar sep)
{ {
gchar *ns_uri, *ns_name, *s, *resolved; gchar *ns_uri, *ns_name;
const gchar *p, *element_name; const gchar *p, *element_name;
gboolean retval; gboolean retval;
@ -1017,7 +1017,7 @@ is_element_full (ParseData *parse_data,
* namespace has been set, just do a plain comparison between @full_element * namespace has been set, just do a plain comparison between @full_element
* and @element. * and @element.
*/ */
p = strchr (element_full, ':'); p = g_utf8_strchr (element_full, -1, ':');
if (p) if (p)
{ {
ns_name = g_strndup (element_full, p - element_full); ns_name = g_strndup (element_full, p - element_full);
@ -1038,13 +1038,10 @@ is_element_full (ParseData *parse_data,
return (0 == strcmp (element_full, element)); return (0 == strcmp (element_full, element));
} }
resolved = g_strdup_printf ("%s%c%s", ns_uri, sep, element_name); retval = (0 == strcmp (ns_uri, namespace) &&
s = g_strdup_printf ("%s%c%s", namespace, sep, element); 0 == strcmp (element_name, element));
retval = (0 == strcmp (resolved, s));
g_free (ns_name); g_free (ns_name);
g_free (resolved);
g_free (s);
return retval; return retval;
} }