[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