53 lines
1.7 KiB
Diff
53 lines
1.7 KiB
Diff
https://bugzilla.novell.com/show_bug.cgi?id=373149 backport glib performance patches for GBookmark
|
|
|
|
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)
|
|
|
|
git-svn-id: svn+ssh://svn.gnome.org/svn/glib/trunk@6751 5bbd4a9e-d125-0410-bf1d-f987e7eefc80
|
|
|
|
diff --git a/glib/gbookmarkfile.c b/glib/gbookmarkfile.c
|
|
index 048df0e..5cf320d 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;
|
|
}
|