summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/pulsecore/core-util.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c
index 0717ff17e..5841df0cc 100644
--- a/src/pulsecore/core-util.c
+++ b/src/pulsecore/core-util.c
@@ -693,6 +693,7 @@ void pa_reset_priority(void) {
static int match(const char *expr, const char *v) {
int k;
regex_t re;
+ int r;
if (regcomp(&re, expr, REG_NOSUB|REG_EXTENDED) != 0) {
errno = EINVAL;
@@ -700,12 +701,18 @@ static int match(const char *expr, const char *v) {
}
if ((k = regexec(&re, v, 0, NULL, 0)) == 0)
- return 1;
+ r = 1;
else if (k == REG_NOMATCH)
- return 0;
+ r = 0;
+ else
+ r = -1;
- errno = EINVAL;
- return -1;
+ regfree(&re);
+
+ if (r < 0)
+ errno = EINVAL;
+
+ return r;
}
/* Try to parse a boolean string value.*/