]> git.saurik.com Git - bison.git/commitdiff
java: finish fixing parser stack popping bug.
authorJoel E. Denny <jdenny@clemson.edu>
Mon, 7 Mar 2011 03:48:46 +0000 (22:48 -0500)
committerJoel E. Denny <jdenny@clemson.edu>
Mon, 7 Mar 2011 04:29:03 +0000 (23:29 -0500)
* 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.
(cherry picked from commit 4c2a6e42ba8b6bc4e04985f5ef3ec8926048d4b1)

Conflicts:

data/lalr1.java

ChangeLog
NEWS
data/lalr1.java

index b722256cecacb131b57190defd812dca46b175ff..c0f22b5280a58b90899a1725d9822f3f4abaa151 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
diff --git a/NEWS b/NEWS
index 93c6e0bf3a2dfc039da9423e11062da5ce9d08bc..144aae850c583423d5bc718e0f46891f531e72dd 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -350,7 +350,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):
 
index e1b488c48690a525ab1510d3a340222b5e6f3579..79c15f1f53c96351e2d2897d38853dcfb5be365c 100644 (file)
@@ -297,14 +297,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;
     }