aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog9
-rw-r--r--gdb/symtab.c23
-rw-r--r--gdb/symtab.h1
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) */