From 10c27a42f756525c85fcb0fec370a2c9068f3e57 Mon Sep 17 00:00:00 2001 From: eeichinger Date: Wed, 29 Jul 2009 15:09:07 +0000 Subject: [PATCH] fixed antlr bug reading beyond stream eof --- src/Spring/Spring.Core/antlr/InputBuffer.cs | 8 ++++++-- .../Expressions/ExpressionEvaluatorTests.cs | 6 +++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/Spring/Spring.Core/antlr/InputBuffer.cs b/src/Spring/Spring.Core/antlr/InputBuffer.cs index e2ccca4f..6ad0ad3e 100644 --- a/src/Spring/Spring.Core/antlr/InputBuffer.cs +++ b/src/Spring/Spring.Core/antlr/InputBuffer.cs @@ -110,8 +110,12 @@ namespace antlr public virtual char LA(int i) { fill(i); - return (char) queue[markerOffset + i - 1]; - } + if ((this.markerOffset + i) <= this.queue.Count) + { + return (char)this.queue[(this.markerOffset + i) - 1]; + } + return CharScanner.EOF_CHAR; + } /*Return an integer marker that can be used to rewind the buffer to * its current state. diff --git a/test/Spring/Spring.Core.Tests/Expressions/ExpressionEvaluatorTests.cs b/test/Spring/Spring.Core.Tests/Expressions/ExpressionEvaluatorTests.cs index d2202620..9c1e9e62 100644 --- a/test/Spring/Spring.Core.Tests/Expressions/ExpressionEvaluatorTests.cs +++ b/test/Spring/Spring.Core.Tests/Expressions/ExpressionEvaluatorTests.cs @@ -402,9 +402,9 @@ namespace Spring.Expressions Assert.AreEqual(Int64.MaxValue.ToString(), ExpressionEvaluator.GetValue(null, "long.MaxValue.ToString()")); // TODO (EE): THIS ANTLR TEST FAILS SINCE SOURCECODE MERGE!!!!!! -// object int64 = ExpressionEvaluator.GetValue(null, Int64.MaxValue.ToString()); -// Assert.AreEqual(int64, Int64.MaxValue); -// Assert.IsTrue(int64 is Int64); + object int64 = ExpressionEvaluator.GetValue(null, Int64.MaxValue.ToString()); + Assert.AreEqual(int64, Int64.MaxValue); + Assert.IsTrue(int64 is Int64); } ///