This is an automated email from the git hooks/post-receive script. henrich pushed a commit to branch debian/sid in repository jruby-joni.
commit 7485ec4646e939f7656d95cf915e1f63ed905bb2 Author: Marcin Mielzynski <[email protected]> Date: Fri Feb 17 23:51:06 2012 +0100 Fix escape for 8 and 9. --- src/org/joni/Lexer.java | 13 +++++-------- src/org/joni/ScannerSupport.java | 6 ++++++ src/org/joni/ast/StringNode.java | 5 +++-- test/org/joni/test/TestA.java | 5 ++++- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/org/joni/Lexer.java b/src/org/joni/Lexer.java index 9ba85b7..e26e6ba 100644 --- a/src/org/joni/Lexer.java +++ b/src/org/joni/Lexer.java @@ -483,7 +483,6 @@ class Lexer extends ScannerSupport { boolean inEsc = false; int i=0; - while(p < to) { if (inEsc) { inEsc = false; @@ -805,8 +804,7 @@ class Lexer extends ScannerSupport { unfetch(); int last = p; int num = scanUnsignedNumber(); - if (num < 0 || num > Config.MAX_BACKREF_NUM) { - // goto skip_backref + if (num < 0 || num > Config.MAX_BACKREF_NUM) { // goto skip_backref } else if (syntax.opDecimalBackref() && (num <= env.numMem || num <= 9)) { /* This spec. from GNU regex */ if (syntax.strictCheckBackref()) { if (num > env.numMem || env.memNodes == null || env.memNodes[num] == null) newValueException(ERR_INVALID_BACKREF); @@ -818,16 +816,15 @@ class Lexer extends ScannerSupport { if (Config.USE_BACKREF_WITH_LEVEL) token.setBackrefExistLevel(false); return; } - // skip_backref: - if (c == '8' || c == '9') { - /* normal char */ + + if (c == '8' || c == '9') { /* normal char */ // skip_backref: p = last; inc(); return; } p = last; - /* fall through */ - fetchTokenFor_zero(); + + fetchTokenFor_zero(); /* fall through */ } private void fetchTokenFor_zero() { diff --git a/src/org/joni/ScannerSupport.java b/src/org/joni/ScannerSupport.java index a2ced01..8598fc6 100644 --- a/src/org/joni/ScannerSupport.java +++ b/src/org/joni/ScannerSupport.java @@ -60,6 +60,7 @@ abstract class ScannerSupport extends IntHolder implements ErrorMessages { private final int INT_SIGN_BIT = 1 << 31; protected final int scanUnsignedNumber() { + int last = c; int num = 0; // long ??? while(left()) { fetch(); @@ -72,10 +73,12 @@ abstract class ScannerSupport extends IntHolder implements ErrorMessages { break; } } + c = last; return num; } protected final int scanUnsignedHexadecimalNumber(int maxLength) { + int last = c; int num = 0; while(left() && maxLength-- != 0) { fetch(); @@ -89,10 +92,12 @@ abstract class ScannerSupport extends IntHolder implements ErrorMessages { break; } } + c = last; return num; } protected final int scanUnsignedOctalNumber(int maxLength) { + int last = c; int num = 0; while(left() && maxLength-- != 0) { fetch(); @@ -106,6 +111,7 @@ abstract class ScannerSupport extends IntHolder implements ErrorMessages { break; } } + c = last; return num; } diff --git a/src/org/joni/ast/StringNode.java b/src/org/joni/ast/StringNode.java index 4429d20..57e33c5 100644 --- a/src/org/joni/ast/StringNode.java +++ b/src/org/joni/ast/StringNode.java @@ -94,14 +94,15 @@ public final class StringNode extends Node implements StringType { @Override public String toString(int level) { StringBuilder value = new StringBuilder(); - value.append("\n bytes: "); + value.append("\n bytes: \'"); for (int i=p; i<end; i++) { if ((bytes[i] & 0xff) >= 0x20 && (bytes[i] & 0xff) < 0x7f) { value.append((char)bytes[i]); } else { - value.append(String.format(" 0x%02x", bytes[i])); + value.append(String.format("0x%02x", bytes[i])); } } + value.append("'"); return value.toString(); } diff --git a/test/org/joni/test/TestA.java b/test/org/joni/test/TestA.java index 427c1d9..ed2d035 100644 --- a/test/org/joni/test/TestA.java +++ b/test/org/joni/test/TestA.java @@ -479,7 +479,10 @@ public class TestA extends Test { x2s("\\g", "g", 0, 1); x2s("\\gx", "gx", 0, 2); x2s("\\k\\g", "kg", 0, 2); - + ns("\\00", "00"); + ns("\\70", "70"); + x2s("\\80", "80", 0, 2); + x2s("\\90", "90", 0, 2); } public static void main(String[] args) throws Throwable{ -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/jruby-joni.git _______________________________________________ pkg-java-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

