From: Emmanuele Bassi Date: Sat, 22 Mar 2008 17:01:52 +0000 (+0000) Subject: Bug 518160 - replace two g_strdup_printf calls in GBookmarkFile X-Git-Url: http://git.openbox.org/?a=commitdiff_plain;h=c14b3842f211ab9ec8ecb6b4fe058c6d12934350;p=dana%2Fcg-glib.git Bug 518160 - replace two g_strdup_printf calls in GBookmarkFile 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) svn path=/trunk/; revision=6751 --- diff --git a/ChangeLog b/ChangeLog index 67606f6e..429a92b2 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 048df0ea..5cf320d5 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; }