diff options
-rw-r--r-- | gdb/ChangeLog | 9 | ||||
-rw-r--r-- | gdb/symtab.c | 23 | ||||
-rw-r--r-- | gdb/symtab.h | 1 |
3 files changed, 27 insertions, 6 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 69124c0..112129b 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,12 @@ +Mon May 29 15:41:10 2000 Andrew Cagney <cagney@b1.cygnus.com> + + * symtab.h (make_cleanup_free_search_symbols): Add declaration. + * symtab.c (make_cleanup_free_search_symbols, + do_free_search_symbols_cleanup): New functions. + (search_symbols, symtab_symbol_info, rbreak_command): Update. + (search_symbols): Pass ``sr'', and not its address, to + make_cleanup_free_search_symbols. + 2000-05-28 Kevin Buettner <kevinb@redhat.com> * config/nm-linux.h (GDB_GREGSET_T, GDB_FPREGSET_T): Fix typos. diff --git a/gdb/symtab.c b/gdb/symtab.c index 4e15896..41c23aa 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -3564,6 +3564,19 @@ free_search_symbols (symbols) } } +static void +do_free_search_symbols_cleanup (void *symbols) +{ + free_search_symbols (symbols); +} + +struct cleanup * +make_cleanup_free_search_symbols (struct symbol_search *symbols) +{ + return make_cleanup (do_free_search_symbols_cleanup, symbols); +} + + /* Search the symbol table for matches to the regular expression REGEXP, returning the results in *MATCHES. @@ -3796,8 +3809,7 @@ search_symbols (regexp, kind, nfiles, files, matches) if (tail == NULL) { sr = psr; - old_chain = make_cleanup ((make_cleanup_func) - free_search_symbols, sr); + old_chain = make_cleanup_free_search_symbols (sr); } else tail->next = psr; @@ -3841,8 +3853,7 @@ search_symbols (regexp, kind, nfiles, files, matches) if (tail == NULL) { sr = psr; - old_chain = make_cleanup ((make_cleanup_func) - free_search_symbols, &sr); + old_chain = make_cleanup_free_search_symbols (sr); } else tail->next = psr; @@ -3957,7 +3968,7 @@ symtab_symbol_info (regexp, kind, from_tty) /* must make sure that if we're interrupted, symbols gets freed */ search_symbols (regexp, kind, 0, (char **) NULL, &symbols); - old_chain = make_cleanup ((make_cleanup_func) free_search_symbols, symbols); + old_chain = make_cleanup_free_search_symbols (symbols); printf_filtered (regexp ? "All %ss matching regular expression \"%s\":\n" @@ -4045,7 +4056,7 @@ rbreak_command (regexp, from_tty) struct cleanup *old_chain; search_symbols (regexp, FUNCTIONS_NAMESPACE, 0, (char **) NULL, &ss); - old_chain = make_cleanup ((make_cleanup_func) free_search_symbols, ss); + old_chain = make_cleanup_free_search_symbols (ss); for (p = ss; p != NULL; p = p->next) { diff --git a/gdb/symtab.h b/gdb/symtab.h index 334d266..d846f3e 100644 --- a/gdb/symtab.h +++ b/gdb/symtab.h @@ -1441,5 +1441,6 @@ struct symbol_search extern void search_symbols (char *, namespace_enum, int, char **, struct symbol_search **); extern void free_search_symbols (struct symbol_search *); +extern struct cleanup *make_cleanup_free_search_symbols (struct symbol_search *); #endif /* !defined(SYMTAB_H) */ |