summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2008-08-09 16:12:50 +0200
committerLennart Poettering <lennart@poettering.net>2008-08-09 16:12:50 +0200
commit9996213c411e1d90940758d2c91b4d50517a30f2 (patch)
tree6c7397a8e3327373aba7c7e800845c222e55ae9c /src
parent15cebbacebf27703848afb18883fad7984349f04 (diff)
free regex_t after use
Diffstat (limited to 'src')
-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 0717ff17..5841df0c 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.*/