[jruby-joni] 03/08: sync up with onigmo 288d4ba731911a410ba73935aef88f550fafd9f0
Hideki Yamane
henrich at moszumanska.debian.org
Fri Dec 25 13:46:01 UTC 2015
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 eda1681026cea4c58cbfa85eb4e6f1882a567214
Author: Marcin Mielzynski <lopx at gazeta.pl>
Date: Sun Dec 13 19:43:22 2015 +0100
sync up with onigmo 288d4ba731911a410ba73935aef88f550fafd9f0
---
src/org/joni/Analyser.java | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
diff --git a/src/org/joni/Analyser.java b/src/org/joni/Analyser.java
index d871f77..7750e70 100644
--- a/src/org/joni/Analyser.java
+++ b/src/org/joni/Analyser.java
@@ -1489,6 +1489,13 @@ final class Analyser extends Parser {
return node;
}
+ private boolean isCaseFoldVariableLength(int itemNum, CaseFoldCodeItem[] items, int slen) {
+ for(int i = 0; i < itemNum; i++) {
+ if (items[i].byteLen != slen || items[i].codeLen != 1) return true;
+ }
+ return false;
+ }
+
private boolean expandCaseFoldStringAlt(int itemNum, CaseFoldCodeItem[]items,
byte[]bytes, int p, int slen, int end, ObjPtr<Node> node) {
boolean varlen = false;
@@ -1562,7 +1569,7 @@ final class Analyser extends Parser {
CaseFoldCodeItem[]items = enc.caseFoldCodesByString(regex.caseFoldFlag, bytes, p, end);
int len = enc.length(bytes, p, end);
- if (items.length == 0) {
+ if (items.length == 0 || !isCaseFoldVariableLength(items.length, items, len)) {
if (stringNode == null) {
if (root == null && prevNode.p != null) {
topRoot = root = ConsAltNode.listAdd(null, prevNode.p);
@@ -1578,6 +1585,10 @@ final class Analyser extends Parser {
} else {
altNum *= (items.length + 1);
if (altNum > THRESHOLD_CASE_FOLD_ALT_FOR_EXPANSION) break;
+ if (stringNode != null) {
+ updateStringNodeCaseFold(stringNode);
+ stringNode.setAmbig();
+ }
if (root == null && prevNode.p != null) {
topRoot = root = ConsAltNode.listAdd(null, prevNode.p);
@@ -1599,6 +1610,11 @@ final class Analyser extends Parser {
p += len;
}
+ if (stringNode != null) {
+ updateStringNodeCaseFold(stringNode);
+ stringNode.setAmbig();
+ }
+
if (p < end) {
Node srem = expandCaseFoldMakeRemString(bytes, p, end);
--
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