From: Patryk Zawadzki Date: Tue, 22 Apr 2008 21:16:06 +0000 (+0000) Subject: - don't die on unsupported namespaces X-Git-Tag: auto/th/dbus-glib-0_74-2~1 X-Git-Url: http://git.pld-linux.org/?p=packages%2Fdbus-glib.git;a=commitdiff_plain;h=b733cca666994f54a1372d29500fc5e30455c509 - don't die on unsupported namespaces - https://bugs.freedesktop.org/show_bug.cgi?id=14429 Changed files: dbus-glib-bug14429.patch -> 1.1 --- diff --git a/dbus-glib-bug14429.patch b/dbus-glib-bug14429.patch new file mode 100644 index 0000000..dbd4e38 --- /dev/null +++ b/dbus-glib-bug14429.patch @@ -0,0 +1,83 @@ +diff -up dbus-glib-0.73/dbus/dbus-gparser.c.ignore-namespaces dbus-glib-0.73/dbus/dbus-gparser.c +--- dbus-glib-0.73/dbus/dbus-gparser.c.ignore-namespaces 2006-09-27 08:27:24.000000000 -0400 ++++ dbus-glib-0.73/dbus/dbus-gparser.c 2008-03-13 08:54:14.000000000 -0400 +@@ -128,13 +128,17 @@ locate_attributes (const char *element_ + + if (!found) + { +- g_set_error (error, +- G_MARKUP_ERROR, +- G_MARKUP_ERROR_PARSE, +- _("Attribute \"%s\" is invalid on <%s> element in this context"), +- attribute_names[i], element_name); +- retval = FALSE; +- goto out; ++ /* We want to passthrough namespaced XML nodes that we don't know anything about. */ ++ if (strchr (attribute_names[i], ':') == NULL) ++ { ++ g_set_error (error, ++ G_MARKUP_ERROR, ++ G_MARKUP_ERROR_PARSE, ++ _("Attribute \"%s\" is invalid on <%s> element in this context"), ++ attribute_names[i], element_name); ++ retval = FALSE; ++ goto out; ++ } + } + + ++i; +@@ -177,6 +181,7 @@ struct Parser + PropertyInfo *property; + ArgInfo *arg; + gboolean in_annotation; ++ guint unknown_namespaced_depth; + }; + + Parser* +@@ -791,10 +796,14 @@ parser_start_element (Parser *parse + } + else + { +- g_set_error (error, G_MARKUP_ERROR, +- G_MARKUP_ERROR_PARSE, +- _("Element <%s> not recognized"), +- element_name); ++ if (strchr (element_name, ':') != NULL) ++ /* Passthrough XML-namespaced nodes */ ++ parser->unknown_namespaced_depth += 1; ++ else if (parser->unknown_namespaced_depth == 0) ++ g_set_error (error, G_MARKUP_ERROR, ++ G_MARKUP_ERROR_PARSE, ++ _("Element <%s> not recognized"), ++ element_name); + } + + return TRUE; +@@ -844,6 +853,15 @@ parser_end_element (Parser *parser, + if (parser->node_stack == NULL) + parser->result = top; /* We are done, store the result */ + } ++ else if (strchr (element_name, ':') != NULL) ++ { ++ /* Passthrough XML-namespaced nodes */ ++ parser->unknown_namespaced_depth -= 1; ++ } ++ else if (parser->unknown_namespaced_depth > 0) ++ { ++ /* pass through unknown elements underneath a namespace */ ++ } + else + g_assert_not_reached (); /* should have had an error on start_element */ + +diff -up dbus-glib-0.73/dbus/dbus-glib-tool.c.ignore-namespaces dbus-glib-0.73/dbus/dbus-glib-tool.c +--- dbus-glib-0.73/dbus/dbus-glib-tool.c.ignore-namespaces 2008-03-13 08:31:21.000000000 -0400 ++++ dbus-glib-0.73/dbus/dbus-glib-tool.c 2008-03-13 08:32:15.000000000 -0400 +@@ -414,7 +414,7 @@ main (int argc, char **argv) + &error); + if (node == NULL) + { +- lose_gerror (_("Unable to load \"%s\""), error); ++ lose (_("Unable to load \"%s\": %s"), filename, error->message); + } + else + {