aboutsummaryrefslogtreecommitdiff
path: root/gdb/utils.c
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/utils.c
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/utils.c')
-rw-r--r--gdb/utils.c32
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