diff options
author | Tom Tromey <tromey@redhat.com> | 2011-01-17 16:50:42 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2011-01-17 16:50:42 +0000 |
commit | dc92e16124ca764e536f2457635749e5431c4765 (patch) | |
tree | 4435d0e6b715c61188acf0aea2a92112a44515f2 /gdb/utils.c | |
parent | da17376b704177fc4d8fa038169782e28b1f3b24 (diff) | |
download | gdb-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/utils.c')
-rw-r--r-- | gdb/utils.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/gdb/utils.c b/gdb/utils.c index c23c4d4..82e3adb 100644 --- a/gdb/utils.c +++ b/gdb/utils.c @@ -73,6 +73,7 @@ #include "gdb_usleep.h" #include "interps.h" +#include "gdb_regex.h" #if !HAVE_DECL_MALLOC extern PTR malloc (); /* ARI: PTR */ @@ -1643,6 +1644,37 @@ gdb_print_host_address (const void *addr, struct ui_file *stream) } +/* A cleanup function that calls regfree. */ + +static void +do_regfree_cleanup (void *r) +{ + regfree (r); +} + +/* Create a new cleanup that frees the compiled regular expression R. */ + +struct cleanup * +make_regfree_cleanup (regex_t *r) +{ + return make_cleanup (do_regfree_cleanup, r); +} + +/* Return an xmalloc'd error message resulting from a regular + expression compilation failure. */ + +char * +get_regcomp_error (int code, regex_t *rx) +{ + size_t length = regerror (code, rx, NULL, 0); + char *result = xmalloc (length); + + regerror (code, rx, result, length); + return result; +} + + + /* This function supports the query, nquery, and yquery functions. Ask user a y-or-n question and return 0 if answer is no, 1 if answer is yes, or default the answer to the specified default |