This is an automated email from the ASF dual-hosted git repository.

garydgregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-lang.git


The following commit(s) were added to refs/heads/master by this push:
     new 7f8b51413 Fix CharRange.contains(CharRange) for negated argument 
ranges (#1775).
7f8b51413 is described below

commit 7f8b51413a8cc2dfadaba137144815932e7b243f
Author: Gary Gregory <[email protected]>
AuthorDate: Sun Aug 16 22:09:38 2026 -0400

    Fix CharRange.contains(CharRange) for negated argument ranges (#1775).
    
    Reuse Character.MIN_VALUE.
---
 src/changes/changes.xml                               |  1 +
 src/main/java/org/apache/commons/lang3/CharRange.java | 11 +++++------
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 4a0ef1548..7143d6d8e 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -245,6 +245,7 @@ java.lang.NullPointerException: Cannot invoke
     <action                   type="fix" dev="ggregory" due-to="alhuda, Gary 
Gregory">Keep StringUtils stripStart and stripEnd off surrogate pair boundaries 
(#1773).</action>
     <action                   type="fix" dev="ggregory" 
due-to="codeAnqiang-ma, Gary Gregory">Fix the month/day example in 
DurationFormatUtils.formatPeriod Javadoc (#1772).</action>
     <action                   type="fix" dev="ggregory" due-to="gaurav kumar 
pandey, Gary Gregory">Fix typos in Javadoc and example comments 
(#1774).</action>
+    <action                   type="fix" dev="ggregory" due-to="alhuda, Gary 
Gregory">Fix CharRange.contains(CharRange) for negated argument ranges 
(#1775).</action>
     <!-- ADD -->
     <action                   type="add" dev="ggregory" due-to="Gary 
Gregory">Add JavaVersion.JAVA_27.</action>
     <action                   type="add" dev="ggregory" due-to="Gary 
Gregory">Add SystemUtils.IS_JAVA_27.</action>
diff --git a/src/main/java/org/apache/commons/lang3/CharRange.java 
b/src/main/java/org/apache/commons/lang3/CharRange.java
index b76276631..1ea3c4a11 100644
--- a/src/main/java/org/apache/commons/lang3/CharRange.java
+++ b/src/main/java/org/apache/commons/lang3/CharRange.java
@@ -58,9 +58,8 @@ private static final class CharacterIterator implements 
Iterator<Character> {
         private CharacterIterator(final CharRange r) {
             range = r;
             hasNext = true;
-
             if (range.negated) {
-                if (range.start == 0) {
+                if (range.start == Character.MIN_VALUE) {
                     if (range.end == Character.MAX_VALUE) {
                         // This range is an empty set
                         hasNext = false;
@@ -68,7 +67,7 @@ private CharacterIterator(final CharRange r) {
                         current = (char) (range.end + 1);
                     }
                 } else {
-                    current = 0;
+                    current = Character.MIN_VALUE;
                 }
             } else {
                 current = range.start;
@@ -270,7 +269,7 @@ public boolean contains(final CharRange range) {
         }
         if (range.negated) {
             // range denotes [0, range.start - 1] union [range.end + 1, 
Character.MAX_VALUE]
-            final boolean lowEmpty = range.start == 0;
+            final boolean lowEmpty = range.start == Character.MIN_VALUE;
             final boolean highEmpty = range.end == Character.MAX_VALUE;
             if (lowEmpty && highEmpty) {
                 return true; // range denotes the empty set
@@ -279,9 +278,9 @@ public boolean contains(final CharRange range) {
                 return end == Character.MAX_VALUE && start <= range.end + 1;
             }
             if (highEmpty) {
-                return start == 0 && end + 1 >= range.start;
+                return start == Character.MIN_VALUE && end + 1 >= range.start;
             }
-            return start == 0 && end == Character.MAX_VALUE;
+            return start == Character.MIN_VALUE && end == Character.MAX_VALUE;
         }
         return start <= range.start && end >= range.end;
     }

Reply via email to