]> git.saurik.com Git - bison.git/commit
tests: check $$'s destruction with variant, YYERROR, and no error recovery
authorAkim Demaille <akim@lrde.epita.fr>
Fri, 15 Nov 2013 08:43:01 +0000 (09:43 +0100)
committerAkim Demaille <akim@lrde.epita.fr>
Fri, 15 Nov 2013 09:13:47 +0000 (10:13 +0100)
commit5cf6e669af1b6133e1ec8cb66a5bd5754ee437c2
tree3b7a5f541e463545bed7ae4acdec88cb28a540a4
parent16bb9f1647c4666d8f4e55c672e0ee5010df9e51
tests: check $$'s destruction with variant, YYERROR, and no error recovery

When variant are enabled, the yylhs variable (the left-hand side of
the rule being reduced, i.e. $$ and @$) is explicitly destroyed when
YYERROR is called.  This is because before running the user code, $$
is initialized, so that the user can properly use it.

However, when quitting yyparse, yylhs is also reclaimed by the C++
compiler: the variable goes out of scope.

This was not detected by the test suite because (i) the Object tracker
was too weak, and (ii) the problem does not show when there is error
recovery.

Reported by Paolo Simone Gasparello.
<http://lists.gnu.org/archive/html/bug-bison/2013-10/msg00003.html>

* tests/c++.at (Exception safety): Improve the objects logger to make
sure that we never destroy twice an object.
Also track copy-constructors.
Use a set instead of a list.
Display the logs before running the function body, this is more
useful in case of failure.
Generalize to track with and without error recovery.
THANKS
tests/c++.at