|
|
a8ac0cb |
diff -up GConf-2.25.2/backends/markup-tree.c.less-work GConf-2.25.2/backends/markup-tree.c
|
|
|
a8ac0cb |
--- GConf-2.25.2/backends/markup-tree.c.less-work 2009-02-16 19:15:19.000000000 -0500
|
|
|
a8ac0cb |
+++ GConf-2.25.2/backends/markup-tree.c 2009-03-03 23:14:07.741320798 -0500
|
|
|
a8ac0cb |
@@ -2167,51 +2167,40 @@ locate_attributes (GMarkupParseContext *
|
|
|
a8ac0cb |
|
|
|
a8ac0cb |
retval = TRUE;
|
|
|
a8ac0cb |
|
|
|
a8ac0cb |
- i = 0;
|
|
|
a8ac0cb |
- while (attribute_names[i])
|
|
|
a8ac0cb |
+ for (i = 0; attribute_names[i]; i++)
|
|
|
a8ac0cb |
{
|
|
|
a8ac0cb |
int j;
|
|
|
a8ac0cb |
- gboolean found;
|
|
|
a8ac0cb |
|
|
|
a8ac0cb |
- found = FALSE;
|
|
|
a8ac0cb |
- j = 0;
|
|
|
a8ac0cb |
- while (j < n_attrs)
|
|
|
a8ac0cb |
+ for (j = 0; j < n_attrs; j++)
|
|
|
a8ac0cb |
{
|
|
|
a8ac0cb |
+ /* already matched */
|
|
|
a8ac0cb |
+ if (attrs[j].name == NULL)
|
|
|
a8ac0cb |
+ continue;
|
|
|
a8ac0cb |
+
|
|
|
a8ac0cb |
if (strcmp (attrs[j].name, attribute_names[i]) == 0)
|
|
|
a8ac0cb |
{
|
|
|
a8ac0cb |
retloc = attrs[j].retloc;
|
|
|
a8ac0cb |
+ attrs[j].name = NULL;
|
|
|
a8ac0cb |
|
|
|
a8ac0cb |
- if (*retloc != NULL)
|
|
|
a8ac0cb |
- {
|
|
|
a8ac0cb |
- set_error (error, context,
|
|
|
a8ac0cb |
- GCONF_ERROR_PARSE_ERROR,
|
|
|
a8ac0cb |
- _("Attribute \"%s\" repeated twice on the same <%s> element"),
|
|
|
a8ac0cb |
- attrs[j].name, element_name);
|
|
|
a8ac0cb |
- retval = FALSE;
|
|
|
a8ac0cb |
- goto out;
|
|
|
a8ac0cb |
- }
|
|
|
a8ac0cb |
+ /* if this fails we passed the same retloc twice */
|
|
|
a8ac0cb |
+ g_assert (*retloc == NULL);
|
|
|
a8ac0cb |
|
|
|
a8ac0cb |
*retloc = attribute_values[i];
|
|
|
a8ac0cb |
- found = TRUE;
|
|
|
a8ac0cb |
+ break;
|
|
|
a8ac0cb |
}
|
|
|
a8ac0cb |
-
|
|
|
a8ac0cb |
- ++j;
|
|
|
a8ac0cb |
}
|
|
|
a8ac0cb |
|
|
|
a8ac0cb |
- if (!found)
|
|
|
a8ac0cb |
+ if (j >= n_attrs)
|
|
|
a8ac0cb |
{
|
|
|
a8ac0cb |
set_error (error, context,
|
|
|
a8ac0cb |
GCONF_ERROR_PARSE_ERROR,
|
|
|
a8ac0cb |
- _("Attribute \"%s\" is invalid on <%s> element in this context"),
|
|
|
a8ac0cb |
+ _("Attribute \"%s\" is invalid, or duplicated on <%s> element in this context"),
|
|
|
a8ac0cb |
attribute_names[i], element_name);
|
|
|
a8ac0cb |
retval = FALSE;
|
|
|
a8ac0cb |
- goto out;
|
|
|
a8ac0cb |
+ break;
|
|
|
a8ac0cb |
}
|
|
|
a8ac0cb |
-
|
|
|
a8ac0cb |
- ++i;
|
|
|
a8ac0cb |
}
|
|
|
a8ac0cb |
|
|
|
a8ac0cb |
- out:
|
|
|
a8ac0cb |
return retval;
|
|
|
a8ac0cb |
}
|
|
|
a8ac0cb |
|
|
|
a8ac0cb |
@@ -3494,10 +3483,9 @@ all_whitespace (const char *text,
|
|
|
a8ac0cb |
|
|
|
a8ac0cb |
while (p != end)
|
|
|
a8ac0cb |
{
|
|
|
a8ac0cb |
- if (!g_ascii_isspace (*p))
|
|
|
a8ac0cb |
- return FALSE;
|
|
|
a8ac0cb |
-
|
|
|
a8ac0cb |
- p = g_utf8_next_char (p);
|
|
|
a8ac0cb |
+ if (G_UNLIKELY (*p != ' ' && *p != '\t' && *p != '\n' && *p != '\r'))
|
|
|
a8ac0cb |
+ return FALSE;
|
|
|
a8ac0cb |
+ p++;
|
|
|
a8ac0cb |
}
|
|
|
a8ac0cb |
|
|
|
a8ac0cb |
return TRUE;
|