fix up xml-support.c
authorTom Tromey <tromey@redhat.com>
Thu, 30 May 2013 17:41:38 +0000 (17:41 +0000)
committerTom Tromey <tromey@redhat.com>
Thu, 30 May 2013 17:41:38 +0000 (17:41 +0000)
xml-support.c has a function that returns a cleanup via an out parameter.

This changes this function to be a normal cleanup constructor --
returning the cleanup directly and returning the other result via an
out parameter.

This is sort of a hack, but it lets the checker work here.

I also noticed that gdb_xml_create_parser_and_cleanup does not need to
be exported any more.

* xml-support.c (gdb_xml_create_parser_and_cleanup): Rename from
gdb_xml_create_parser_and_cleanup_1.  Return a cleanup.  Remove
'old_chain' argument.  Add 'parser_result' argument.
(gdb_xml_create_parser_and_cleanup): Remove old version.
(gdb_xml_parse_quick): Update.
(xml_process_xincludes): Update.
* xml-support.h (gdb_xml_create_parser_and_cleanup): Don't
declare.

gdb/ChangeLog
gdb/xml-support.c
gdb/xml-support.h

index 142efca..fe96062 100644 (file)
@@ -1,5 +1,16 @@
 2013-05-30  Tom Tromey  <tromey@redhat.com>
 
+       * xml-support.c (gdb_xml_create_parser_and_cleanup): Rename from
+       gdb_xml_create_parser_and_cleanup_1.  Return a cleanup.  Remove
+       'old_chain' argument.  Add 'parser_result' argument.
+       (gdb_xml_create_parser_and_cleanup): Remove old version.
+       (gdb_xml_parse_quick): Update.
+       (xml_process_xincludes): Update.
+       * xml-support.h (gdb_xml_create_parser_and_cleanup): Don't
+       declare.
+
+2013-05-30  Tom Tromey  <tromey@redhat.com>
+
        * probe.c (collect_probes): Check arguments for NULL before
        calling compile_rx_or_error.
        * utils.c (compile_rx_or_error): Require 'rx' to be non-NULL.
index b777814..1682d8e 100644 (file)
@@ -440,17 +440,18 @@ gdb_xml_cleanup (void *arg)
   xfree (parser);
 }
 
-/* Initialize and return a parser.  Register a cleanup to destroy the
-   parser.  */
+/* Initialize a parser and store it to *PARSER_RESULT.  Register a
+   cleanup to destroy the parser.  */
 
-static struct gdb_xml_parser *
-gdb_xml_create_parser_and_cleanup_1 (const char *name,
-                                    const struct gdb_xml_element *elements,
-                                    void *user_data, struct cleanup **old_chain)
+static struct cleanup *
+gdb_xml_create_parser_and_cleanup (const char *name,
+                                  const struct gdb_xml_element *elements,
+                                  void *user_data,
+                                  struct gdb_xml_parser **parser_result)
 {
   struct gdb_xml_parser *parser;
   struct scope_level start_scope;
-  struct cleanup *dummy;
+  struct cleanup *result;
 
   /* Initialize the parser.  */
   parser = XZALLOC (struct gdb_xml_parser);
@@ -476,25 +477,8 @@ gdb_xml_create_parser_and_cleanup_1 (const char *name,
   start_scope.elements = elements;
   VEC_safe_push (scope_level_s, parser->scopes, &start_scope);
 
-  if (old_chain == NULL)
-    old_chain = &dummy;
-
-  *old_chain = make_cleanup (gdb_xml_cleanup, parser);
-  return parser;
-}
-
-/* Initialize and return a parser.  Register a cleanup to destroy the
-   parser.  */
-
-struct gdb_xml_parser *
-gdb_xml_create_parser_and_cleanup (const char *name,
-                                  const struct gdb_xml_element *elements,
-                                  void *user_data)
-{
-  struct cleanup *old_chain;
-
-  return gdb_xml_create_parser_and_cleanup_1 (name, elements, user_data,
-                                             &old_chain);
+  *parser_result = parser;
+  return make_cleanup (gdb_xml_cleanup, parser);
 }
 
 /* External entity handler.  The only external entities we support
@@ -623,8 +607,8 @@ gdb_xml_parse_quick (const char *name, const char *dtd_name,
   struct cleanup *back_to;
   int result;
 
-  parser = gdb_xml_create_parser_and_cleanup_1 (name, elements,
-                                               user_data, &back_to);
+  back_to = gdb_xml_create_parser_and_cleanup (name, elements,
+                                              user_data, &parser);
   if (dtd_name != NULL)
     gdb_xml_use_dtd (parser, dtd_name);
   result = gdb_xml_parse (parser, document);
@@ -897,7 +881,8 @@ xml_process_xincludes (const char *name, const char *text,
   obstack_init (&data->obstack);
   back_to = make_cleanup (xml_xinclude_cleanup, data);
 
-  parser = gdb_xml_create_parser_and_cleanup (name, xinclude_elements, data);
+  gdb_xml_create_parser_and_cleanup (name, xinclude_elements,
+                                    data, &parser);
   parser->is_xinclude = 1;
 
   data->include_depth = depth;
index a319678..a3a15ca 100644 (file)
@@ -171,13 +171,6 @@ struct gdb_xml_element
   gdb_xml_element_end_handler *end_handler;
 };
 
-/* Initialize and return a parser.  Register a cleanup to destroy the
-   parser.  */
-
-struct gdb_xml_parser *gdb_xml_create_parser_and_cleanup
-  (const char *name, const struct gdb_xml_element *elements,
-   void *user_data);
-
 /* Associate DTD_NAME, which must be the name of a compiled-in DTD,
    with PARSER.  */