]> code.delx.au - pulseaudio/commitdiff
free regex_t after use
authorLennart Poettering <lennart@poettering.net>
Sat, 9 Aug 2008 14:12:50 +0000 (16:12 +0200)
committerLennart Poettering <lennart@poettering.net>
Sat, 9 Aug 2008 14:12:50 +0000 (16:12 +0200)
src/pulsecore/core-util.c

index 0717ff17e18346bccf365e259d5d108b6b08b34f..5841df0cc2ee69fdbb46dce65cbfcc5989d760bc 100644 (file)
@@ -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.*/