From eeb1a02fff8aaf04e63991dba7553aca85dc9dd1 Mon Sep 17 00:00:00 2001 From: Romain Goyet Date: Tue, 25 Apr 2017 16:12:38 +0200 Subject: [PATCH] [poincare] Fix memleaks when discarding symbols in the parser Change-Id: Iff92247d1909b15f2dfcc15006c722770b61c0d3 --- poincare/src/expression_parser.y | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/poincare/src/expression_parser.y b/poincare/src/expression_parser.y index 5f0f7f803..8d52d7006 100644 --- a/poincare/src/expression_parser.y +++ b/poincare/src/expression_parser.y @@ -99,6 +99,16 @@ void poincare_expression_yyerror(Poincare::Expression ** expressionOutput, char %type lstData; %type mtxData; +/* During error recovery, some symbols need to be discarded. We need to tell + * Bison how to get rid of them. Depending on the type of the symbol, it may + * have some heap-allocated data that need to be discarded. */ + +%destructor { delete $$; } FUNCTION +%destructor { delete $$; } UNDEFINED exp number +%destructor { delete $$; } lstData +%destructor { delete $$; } mtxData +%destructor { delete $$; } symb + %% Root: