summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2013-05-30 17:39:34 +0000
committerTom Tromey <tromey@redhat.com>2013-05-30 17:39:34 +0000
commitdb26349c64fd5303eb52612305271e4eddae087e (patch)
tree25997c107fe75e5e2200a6b88e7e4dbbc33e8288
parent77f9e713027d32cc5ca1fb8d05e7b1b3f5397ec7 (diff)
downloadppe42-binutils-db26349c64fd5303eb52612305271e4eddae087e.tar.gz
ppe42-binutils-db26349c64fd5303eb52612305271e4eddae087e.zip
fix compile_rx_or_error
compile_rx_or_error looks like a constructor, but it can return NULL. This patch changes it to remove the NULL return, making it work like any other cleanup constructor. This is a stylistic patch but I think it is also better for code to follow the normal conventions. * probe.c (collect_probes): Check arguments for NULL before calling compile_rx_or_error. * utils.c (compile_rx_or_error): Require 'rx' to be non-NULL. Remove NULL return.
-rw-r--r--gdb/ChangeLog7
-rw-r--r--gdb/probe.c9
-rw-r--r--gdb/utils.c7
3 files changed, 16 insertions, 7 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 7adba7755a..142efca820 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,12 @@
2013-05-30 Tom Tromey <tromey@redhat.com>
+ * probe.c (collect_probes): Check arguments for NULL before
+ calling compile_rx_or_error.
+ * utils.c (compile_rx_or_error): Require 'rx' to be non-NULL.
+ Remove NULL return.
+
+2013-05-30 Tom Tromey <tromey@redhat.com>
+
* infrun.c (adjust_pc_after_break): Introduce an outer null
cleanup.
diff --git a/gdb/probe.c b/gdb/probe.c
index 05bdd1baef..3086f4df35 100644
--- a/gdb/probe.c
+++ b/gdb/probe.c
@@ -245,9 +245,12 @@ collect_probes (char *objname, char *provider, char *probe_name,
cleanup = make_cleanup (VEC_cleanup (probe_p), &result);
cleanup_temps = make_cleanup (null_cleanup, NULL);
- compile_rx_or_error (&prov_pat, provider, _("Invalid provider regexp"));
- compile_rx_or_error (&probe_pat, probe_name, _("Invalid probe regexp"));
- compile_rx_or_error (&obj_pat, objname, _("Invalid object file regexp"));
+ if (provider != NULL)
+ compile_rx_or_error (&prov_pat, provider, _("Invalid provider regexp"));
+ if (probe_name != NULL)
+ compile_rx_or_error (&probe_pat, probe_name, _("Invalid probe regexp"));
+ if (objname != NULL)
+ compile_rx_or_error (&obj_pat, objname, _("Invalid object file regexp"));
ALL_OBJFILES (objfile)
{
diff --git a/gdb/utils.c b/gdb/utils.c
index c25dadfe28..18ee9bbf98 100644
--- a/gdb/utils.c
+++ b/gdb/utils.c
@@ -1127,16 +1127,15 @@ get_regcomp_error (int code, regex_t *rx)
}
/* Compile a regexp and throw an exception on error. This returns a
- cleanup to free the resulting pattern on success. If RX is NULL,
- this does nothing and returns NULL. */
+ cleanup to free the resulting pattern on success. RX must not be
+ NULL. */
struct cleanup *
compile_rx_or_error (regex_t *pattern, const char *rx, const char *message)
{
int code;
- if (!rx)
- return NULL;
+ gdb_assert (rx != NULL);
code = regcomp (pattern, rx, REG_NOSUB);
if (code != 0)
OpenPOWER on IntegriCloud