[jruby-joni] 08/31: look behind fixes
Hideki Yamane
henrich at moszumanska.debian.org
Sat Feb 24 10:44:58 UTC 2018
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 0bbfe42d295efb432ba53afb3993533f89ee4495
Author: lopex <lopx at gazeta.pl>
Date: Thu Feb 1 12:24:32 2018 +0100
look behind fixes
---
src/org/joni/Analyser.java | 8 ++++++--
src/org/joni/Matcher.java | 8 +++++++-
test/org/joni/test/TestU8.java | 4 ++++
3 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/src/org/joni/Analyser.java b/src/org/joni/Analyser.java
index 467fc46..d5ce220 100644
--- a/src/org/joni/Analyser.java
+++ b/src/org/joni/Analyser.java
@@ -2311,10 +2311,14 @@ final class Analyser extends Parser {
regex.anchor = opt.anchor.leftAnchor & (AnchorType.BEGIN_BUF |
AnchorType.BEGIN_POSITION |
AnchorType.ANYCHAR_STAR |
- AnchorType.ANYCHAR_STAR_ML);
+ AnchorType.ANYCHAR_STAR_ML |
+ AnchorType.LOOK_BEHIND);
+
+ if ((opt.anchor.leftAnchor & (AnchorType.LOOK_BEHIND | AnchorType.PREC_READ_NOT)) != 0) regex.anchor &= ~AnchorType.ANYCHAR_STAR_ML;
regex.anchor |= opt.anchor.rightAnchor & (AnchorType.END_BUF |
- AnchorType.SEMI_END_BUF);
+ AnchorType.SEMI_END_BUF |
+ AnchorType.PREC_READ_NOT);
if ((regex.anchor & (AnchorType.END_BUF | AnchorType.SEMI_END_BUF)) != 0) {
regex.anchorDmin = opt.length.min;
diff --git a/src/org/joni/Matcher.java b/src/org/joni/Matcher.java
index 5d63442..c4226fd 100644
--- a/src/org/joni/Matcher.java
+++ b/src/org/joni/Matcher.java
@@ -433,10 +433,16 @@ public abstract class Matcher extends IntHolder {
if (matchCheck(origRange, s, prev)) return match(s);
prev = s;
s += enc.length(bytes, s, end);
+
+ if ((regex.anchor & (AnchorType.LOOK_BEHIND | AnchorType.PREC_READ_NOT)) == 0) {
+ while (!enc.isNewLine(bytes, prev, end) && s < range) {
+ prev = s;
+ s += enc.length(bytes, s, end);
+ }
+ }
} while (s < range);
return mismatch();
}
-
}
}
diff --git a/test/org/joni/test/TestU8.java b/test/org/joni/test/TestU8.java
index 539e3d1..90d34d2 100755
--- a/test/org/joni/test/TestU8.java
+++ b/test/org/joni/test/TestU8.java
@@ -326,5 +326,9 @@ public class TestU8 extends Test {
ns("[^a\\x{80}]", "a", Option.CR_7_BIT);
ns("(\\2)(\\1)", "");
+
+ x2s("(?<=fo).*", "foo", 2, 3);
+ x2s("(?m)(?<=fo).*", "foo", 2, 3);
+ x2s("(?m)(?<=fo).+", "foo", 2, 3);
}
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/jruby-joni.git
More information about the pkg-java-commits
mailing list