parser: don't leak AST nodes for discarded symbols
authorRan Benita <ran234@gmail.com>
Sat, 26 Jul 2014 19:34:05 +0000 (22:34 +0300)
committerRan Benita <ran234@gmail.com>
Sat, 26 Jul 2014 19:46:01 +0000 (22:46 +0300)
commit7ec00933c178942b04f4716882132f7971db7d26
tree1921e2917351694f2f7357eb05158712ea8adf89
parentf5182bbd7415bfa99d78a7865d67a56f770447a0
parser: don't leak AST nodes for discarded symbols

If the parser has symbols on the stack, and then enters an error, it
discards the symbols and fails. But their actions which allocate AST
nodes had already ran. So we must free these to avoid leaks.

We use %destructor declarations, see
http://www.gnu.org/software/bison/manual/html_node/Destructor-Decl.html

Note: byacc only supports %destructor when compiled with
--enable-btyacc. Also, it doesn't support using the parse-param in the
destructor. So we might revert this commit before the next release, or
forget about byacc.

https://github.com/xkbcommon/libxkbcommon/issues/8

Signed-off-by: Ran Benita <ran234@gmail.com>
src/xkbcomp/parser.y