Don't leak the scanner's buffer
authorRan Benita <ran234@gmail.com>
Thu, 1 Mar 2012 18:44:42 +0000 (20:44 +0200)
committerRan Benita <ran234@gmail.com>
Sat, 3 Mar 2012 22:04:04 +0000 (00:04 +0200)
Signed-off-by: Ran Benita <ran234@gmail.com>
src/xkbcomp/xkbscan.l

index 4b02b65..478dd04 100644 (file)
@@ -229,20 +229,18 @@ XKBParseString(const char *string, XkbFile ** pRtrn)
 int
 XKBParseFile(FILE * file, XkbFile ** pRtrn)
 {
-    if (file)
-    {
-        yyin = file;
-        rtrnValue = NULL;
-        if (yyparse() == 0)
-        {
-            *pRtrn = rtrnValue;
-            CheckDefaultMap(rtrnValue);
-            rtrnValue = NULL;
-            return 1;
-        }
-        *pRtrn = NULL;
-        return 0;
-    }
     *pRtrn = NULL;
+    if (!file)
+        return 1;
+
+    yyin = file;
+    rtrnValue = NULL;
+    if (yyparse() != 0)
+        return 0;
+
+    yylex_destroy();
+    *pRtrn = rtrnValue;
+    CheckDefaultMap(rtrnValue);
+    rtrnValue = NULL;
     return 1;
 }