SOURCES: dbus-glib-bug14429.patch (NEW) - don't die on unsupported...

patrys patrys at pld-linux.org
Tue Apr 22 23:16:11 CEST 2008


Author: patrys                       Date: Tue Apr 22 21:16:11 2008 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- don't die on unsupported namespaces
- https://bugs.freedesktop.org/show_bug.cgi?id=14429

---- Files affected:
SOURCES:
   dbus-glib-bug14429.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/dbus-glib-bug14429.patch
diff -u /dev/null SOURCES/dbus-glib-bug14429.patch:1.1
--- /dev/null	Tue Apr 22 23:16:11 2008
+++ SOURCES/dbus-glib-bug14429.patch	Tue Apr 22 23:16:06 2008
@@ -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
+ 	{
================================================================


More information about the pld-cvs-commit mailing list