From e3b76b4f446aeb82fdfd46185b624359d5490ec6 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Thu, 30 May 2013 17:41:38 +0000 Subject: [PATCH] fix up xml-support.c 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 | 11 +++++++++++ gdb/xml-support.c | 43 ++++++++++++++----------------------------- gdb/xml-support.h | 7 ------- 3 files changed, 25 insertions(+), 36 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 142efca820e..fe96062b1b8 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,14 @@ +2013-05-30 Tom Tromey + + * 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 * probe.c (collect_probes): Check arguments for NULL before diff --git a/gdb/xml-support.c b/gdb/xml-support.c index b777814fb9f..1682d8e33c3 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 a319678e269..a3a15ca4362 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. */ -- 2.34.1