This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 40/40] fix up xml-support.c


>>>>> "Tom" == Tom Tromey <tromey@redhat.com> writes:

Tom> xml-support.c has a function that returns a cleanup via an out parameter.
Tom> This changes this function to be a normal cleanup constructor --
Tom> returning the cleanup directly and returning the other result via an
Tom> out parameter.

Pedro pointed out that gdb_xml_create_parser_and_cleanup_1 can be
renamed back to gdb_xml_create_parser_and_cleanup now.  So, I am
checking in the appended version of this patch, which implements this
change.

Tom

    	* 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.

diff --git a/gdb/xml-support.c b/gdb/xml-support.c
index b777814..1682d8e 100644
--- a/gdb/xml-support.c
+++ b/gdb/xml-support.c
@@ -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;
diff --git a/gdb/xml-support.h b/gdb/xml-support.h
index a319678..a3a15ca 100644
--- a/gdb/xml-support.h
+++ b/gdb/xml-support.h
@@ -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.  */
 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]