diff options
author | Joel E. Denny <jdenny@clemson.edu> | 2011-03-06 22:48:46 -0500 |
---|---|---|
committer | Joel E. Denny <jdenny@clemson.edu> | 2011-03-06 23:07:59 -0500 |
commit | 4c2a6e42ba8b6bc4e04985f5ef3ec8926048d4b1 (patch) | |
tree | f8b475c0ba13eb3a6e054e38559737f8a31784d0 | |
parent | 6f75992be50b83a084f955f63e5c35ccc8705f08 (diff) | |
download | bison-4c2a6e42ba8b6bc4e04985f5ef3ec8926048d4b1.tar.gz |
java: finish fixing parser stack popping bug.
* NEWS (2.5): Document.
* data/lalr1.java (YYParser::YYStack::pop): Fix off-by-one error
in clearing the location stack. Also fix pop function that
accepts no arguments.
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | NEWS | 7 | ||||
-rw-r--r-- | data/lalr1.java | 4 |
3 files changed, 16 insertions, 3 deletions
@@ -1,3 +1,11 @@ +2011-03-06 Joel E. Denny <joeldenny@joeldenny.org> + + java: finish fixing parser stack popping bug. + * NEWS (2.5): Document. + * data/lalr1.java (YYParser::YYStack::pop): Fix off-by-one error + in clearing the location stack. Also fix pop function that + accepts no arguments. + 2011-03-06 Angelo Borsotti <angelo.borsotti@gmail.com> (tiny change) java: fix parser stack popping bug. @@ -291,7 +291,12 @@ Bison News canonical LR. However, LAC is still experimental and is disabled by default. -** A location handling bug in the Java skeleton has been fixed. +** Java skeleton fixes: + +*** A location handling bug has been fixed. + +*** The top element of each of the value stack and location stack is now + cleared when popped so that it can be garbage collected. * Changes in version 2.4.3 (2010-08-05): diff --git a/data/lalr1.java b/data/lalr1.java index 29005c28..2e6cc8a9 100644 --- a/data/lalr1.java +++ b/data/lalr1.java @@ -255,14 +255,14 @@ b4_lexer_if([[ } public final void pop () { - height--; + pop (1); } public final void pop (int num) { // Avoid memory leaks... garbage collection is a white lie! if (num > 0) { java.util.Arrays.fill (valueStack, height - num + 1, height + 1, null); - ]b4_locations_if([[java.util.Arrays.fill (locStack, height - num + 1, height, null);]])[ + ]b4_locations_if([[java.util.Arrays.fill (locStack, height - num + 1, height + 1, null);]])[ } height -= num; } |