diff options
author | Tom Tromey <tromey@redhat.com> | 2013-05-30 17:41:38 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2013-05-30 17:41:38 +0000 |
commit | e3b76b4f446aeb82fdfd46185b624359d5490ec6 (patch) | |
tree | 19bdf37a1c1db919a583ecb42684883404046cfb /gdb/xml-support.c | |
parent | db26349c64fd5303eb52612305271e4eddae087e (diff) | |
download | gdb-e3b76b4f446aeb82fdfd46185b624359d5490ec6.zip gdb-e3b76b4f446aeb82fdfd46185b624359d5490ec6.tar.gz gdb-e3b76b4f446aeb82fdfd46185b624359d5490ec6.tar.bz2 |
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.
Diffstat (limited to 'gdb/xml-support.c')
-rw-r--r-- | gdb/xml-support.c | 43 |
1 files changed, 14 insertions, 29 deletions
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; |