From a8ac0cba92650f158f05ecdfe0a9c9b8b1eb6c85 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 4 Mar 2009 04:15:58 +0000 Subject: [PATCH] do less work --- GConf2.spec | 9 +++-- gconf-less-work.patch | 82 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 89 insertions(+), 2 deletions(-) create mode 100644 gconf-less-work.patch diff --git a/GConf2.spec b/GConf2.spec index d9f2084..3ba7cba 100644 --- a/GConf2.spec +++ b/GConf2.spec @@ -1,5 +1,5 @@ %define libxml2_version 2.4.12 -%define orbit2_version 2.8.0 +%define orbit2_version 2.8.0 %define glib2_version 2.14.0 %define dbus_version 1.0.1 %define dbus_glib_version 0.74 @@ -7,7 +7,7 @@ Summary: A process-transparent configuration system Name: GConf2 Version: 2.25.2 -Release: 2%{?dist} +Release: 3%{?dist} License: LGPLv2+ Group: System Environment/Base Source: http://download.gnome.org/sources/GConf/2.25/GConf-%{version}.tar.bz2 @@ -32,6 +32,7 @@ Requires: dbus Requires: /usr/bin/killall Patch0: GConf-2.18.0.1-reload.patch +Patch1: gconf-less-work.patch %description GConf is a process-transparent configuration database API used to @@ -67,6 +68,7 @@ which require GTK+. %prep %setup -q -n GConf-%{version} %patch0 -p1 -b .reload +%patch1 -p1 -b .less-work %build %configure --disable-static --enable-defaults-service @@ -141,6 +143,9 @@ fi %{_libdir}/pkgconfig/* %changelog +* Tue Mar 3 2009 Matthias Clasen - 2.25.2-2 +- Avoid some gratitious extra work in the markup backend + * Mon Feb 23 2009 Fedora Release Engineering - 2.25.2-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild diff --git a/gconf-less-work.patch b/gconf-less-work.patch new file mode 100644 index 0000000..3eaccca --- /dev/null +++ b/gconf-less-work.patch @@ -0,0 +1,82 @@ +diff -up GConf-2.25.2/backends/markup-tree.c.less-work GConf-2.25.2/backends/markup-tree.c +--- GConf-2.25.2/backends/markup-tree.c.less-work 2009-02-16 19:15:19.000000000 -0500 ++++ GConf-2.25.2/backends/markup-tree.c 2009-03-03 23:14:07.741320798 -0500 +@@ -2167,51 +2167,40 @@ locate_attributes (GMarkupParseContext * + + retval = TRUE; + +- i = 0; +- while (attribute_names[i]) ++ for (i = 0; attribute_names[i]; i++) + { + int j; +- gboolean found; + +- found = FALSE; +- j = 0; +- while (j < n_attrs) ++ for (j = 0; j < n_attrs; j++) + { ++ /* already matched */ ++ if (attrs[j].name == NULL) ++ continue; ++ + if (strcmp (attrs[j].name, attribute_names[i]) == 0) + { + retloc = attrs[j].retloc; ++ attrs[j].name = NULL; + +- if (*retloc != NULL) +- { +- set_error (error, context, +- GCONF_ERROR_PARSE_ERROR, +- _("Attribute \"%s\" repeated twice on the same <%s> element"), +- attrs[j].name, element_name); +- retval = FALSE; +- goto out; +- } ++ /* if this fails we passed the same retloc twice */ ++ g_assert (*retloc == NULL); + + *retloc = attribute_values[i]; +- found = TRUE; ++ break; + } +- +- ++j; + } + +- if (!found) ++ if (j >= n_attrs) + { + set_error (error, context, + GCONF_ERROR_PARSE_ERROR, +- _("Attribute \"%s\" is invalid on <%s> element in this context"), ++ _("Attribute \"%s\" is invalid, or duplicated on <%s> element in this context"), + attribute_names[i], element_name); + retval = FALSE; +- goto out; ++ break; + } +- +- ++i; + } + +- out: + return retval; + } + +@@ -3494,10 +3483,9 @@ all_whitespace (const char *text, + + while (p != end) + { +- if (!g_ascii_isspace (*p)) +- return FALSE; +- +- p = g_utf8_next_char (p); ++ if (G_UNLIKELY (*p != ' ' && *p != '\t' && *p != '\n' && *p != '\r')) ++ return FALSE; ++ p++; + } + + return TRUE;