aboutsummaryrefslogtreecommitdiff
path: root/gdb/cli
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2011-01-17 16:50:42 +0000
committerTom Tromey <tromey@redhat.com>2011-01-17 16:50:42 +0000
commitdc92e16124ca764e536f2457635749e5431c4765 (patch)
tree4435d0e6b715c61188acf0aea2a92112a44515f2 /gdb/cli
parentda17376b704177fc4d8fa038169782e28b1f3b24 (diff)
downloadgdb-dc92e16124ca764e536f2457635749e5431c4765.zip
gdb-dc92e16124ca764e536f2457635749e5431c4765.tar.gz
gdb-dc92e16124ca764e536f2457635749e5431c4765.tar.bz2
* cli/cli-cmds.c (apropos_command): Free the compiled regex. Use
get_regcomp_error. * utils.c: Include gdb_regex.h. (do_regfree_cleanup): New function. (make_regfree_cleanup): Likewise. (get_regcomp_error): Likewise. * gdb_regex.h (make_regfree_cleanup, get_regcomp_error): Declare.
Diffstat (limited to 'gdb/cli')
-rw-r--r--gdb/cli/cli-cmds.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c
index e1d8174..c11b257 100644
--- a/gdb/cli/cli-cmds.c
+++ b/gdb/cli/cli-cmds.c
@@ -1254,18 +1254,26 @@ void
apropos_command (char *searchstr, int from_tty)
{
regex_t pattern;
- char errorbuffer[512];
+ int code;
if (searchstr == NULL)
error (_("REGEXP string is empty"));
- if (regcomp (&pattern, searchstr, REG_ICASE) == 0)
- apropos_cmd (gdb_stdout, cmdlist, &pattern, "");
+ code = regcomp (&pattern, searchstr, REG_ICASE);
+ if (code == 0)
+ {
+ struct cleanup *cleanups;
+
+ cleanups = make_regfree_cleanup (&pattern);
+ apropos_cmd (gdb_stdout, cmdlist, &pattern, "");
+ do_cleanups (cleanups);
+ }
else
{
- regerror (regcomp (&pattern, searchstr, REG_ICASE), NULL,
- errorbuffer, 512);
- error (_("Error in regular expression: %s"), errorbuffer);
+ char *err = get_regcomp_error (code, &pattern);
+
+ make_cleanup (xfree, err);
+ error (_("Error in regular expression: %s"), err);
}
}