diff --git a/ChangeLog b/ChangeLog index 67606f6e6..429a92b22 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,14 @@ +2008-03-22 Emmanuele Bassi + + 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 - * configure.in: + * configure.in: Final fixes for struct statfs.f_fstypename checks (OpenBSD). (#521045) Patch from ephraim_owns@hotmail.com diff --git a/glib/gbookmarkfile.c b/glib/gbookmarkfile.c index 048df0ea1..5cf320d5e 100644 --- a/glib/gbookmarkfile.c +++ b/glib/gbookmarkfile.c @@ -998,7 +998,7 @@ is_element_full (ParseData *parse_data, const gchar *element, const gchar sep) { - gchar *ns_uri, *ns_name, *s, *resolved; + gchar *ns_uri, *ns_name; const gchar *p, *element_name; gboolean retval; @@ -1017,7 +1017,7 @@ is_element_full (ParseData *parse_data, * namespace has been set, just do a plain comparison between @full_element * and @element. */ - p = strchr (element_full, ':'); + p = g_utf8_strchr (element_full, -1, ':'); if (p) { ns_name = g_strndup (element_full, p - element_full); @@ -1037,14 +1037,11 @@ is_element_full (ParseData *parse_data, return (0 == strcmp (element_full, element)); } - - resolved = g_strdup_printf ("%s%c%s", ns_uri, sep, element_name); - s = g_strdup_printf ("%s%c%s", namespace, sep, element); - retval = (0 == strcmp (resolved, s)); + + retval = (0 == strcmp (ns_uri, namespace) && + 0 == strcmp (element_name, element)); g_free (ns_name); - g_free (resolved); - g_free (s); return retval; }