summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRan Benita <ran234@gmail.com>2014-07-27 14:24:20 +0300
committerRan Benita <ran234@gmail.com>2014-07-27 14:32:18 +0300
commit40f109af56493605410f2bea891779fbbfa3fda9 (patch)
tree7f0f9cb87f1c25024556231325e0dcf501195054 /src
parent37cf20c90635c8cce675393ce885376795b553ea (diff)
downloadxorg-lib-libxkbcommon-40f109af56493605410f2bea891779fbbfa3fda9.tar.gz
ast-build: make sure InterpDef is freeable
With the following two rules: InterpretDecl : INTERPRET InterpretMatch OBRACE VarDeclList CBRACE SEMI { $2->def = $4; $$ = $2; } ; InterpretMatch : KeySym PLUS Expr { $$ = InterpCreate($1, $3); } | KeySym { $$ = InterpCreate($1, NULL); } ; And the fact that InterpCreate doesn't initialize ->def, if the VarDeclList fails, the %destructor tries to recursively free the uninitialized ->def VarDef. So always initialize it. That was the only problematic code in the parser for %destructor (I'm pretty sure). Signed-off-by: Ran Benita <ran234@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/xkbcomp/ast-build.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/xkbcomp/ast-build.c b/src/xkbcomp/ast-build.c
index 4ce1cc4..58c482c 100644
--- a/src/xkbcomp/ast-build.c
+++ b/src/xkbcomp/ast-build.c
@@ -325,6 +325,7 @@ InterpCreate(xkb_keysym_t sym, ExprDef *match)
def->common.next = NULL;
def->sym = sym;
def->match = match;
+ def->def = NULL;
return def;
}