]> git.saurik.com Git - bison.git/commit - ChangeLog
* data/glr.c (yyresolveValue): When merging semantic options, if at
authorJoel E. Denny <jdenny@ces.clemson.edu>
Thu, 5 Jan 2006 21:07:54 +0000 (21:07 +0000)
committerJoel E. Denny <jdenny@ces.clemson.edu>
Thu, 5 Jan 2006 21:07:54 +0000 (21:07 +0000)
commitd659304d0a57e470f5f73ac49eb6d11bc14dd5bf
tree3e0290c9f7e786bcc9541ad25eec96486fc5f6a2
parent6ec2c0f2958f30b29e0886cbb8ebacea62c8ce25
* data/glr.c (yyresolveValue): When merging semantic options, if at
least one user action succeeds but a later one cuts the parse, then
destroy the semantic value before returning rather than leaking it.
(yyresolveStates): If a user action cuts the parse and thus
yyresolveValue fails, ignore the (unset) semantic value rather than
corrupting the yyGLRState, and empty the semantic options list since
the user actions should have called all necessary destructors.
Simplify code with YYCHK.
* tests/glr-regression.at (Corrupted semantic options if user action
cuts parse): New test case.
(Undesirable destructors if user action cuts parse): New test case.
Before applying any of this patch, this test case never actually failed
for me... but only because the corrupted semantic options usually
masked this bug.
(Leaked merged semantic value if user action cuts parse): New test
case.
ChangeLog
data/glr.c
tests/glr-regression.at