NEGRO Eric created LANG-1207:
--------------------------------
Summary: StringUtils.equals with CharSequence -
IndexOutOfBoundsException
Key: LANG-1207
URL: https://issues.apache.org/jira/browse/LANG-1207
Project: Commons Lang
Issue Type: Bug
Components: lang.*
Affects Versions: 3.4
Reporter: NEGRO Eric
Good day,
This is my first report here, so I'm really sorry if I did not fill in the form
right .
I just ran into a bug with the method
*public static boolean equals(final CharSequence cs1, final CharSequence cs2)*.
If one of the object is not the String object, the method use the
CharSequenceUtils to check the equality.
The problem is that using Math.max(cs1.length(), cs2.length()) give the max
length of the 2 objects. Then 1 of the object throw *IndexOutOfBoundsException*.
I think it will be better to check the size before using CharSequenceUtils as
the method equalsIgnoreCase.
Maybe this code could correct the bug :
if (cs1 == cs2) {
return true;
} else if (cs1 == null || cs2 == null) {
return false;
} else if (cs1.length() != cs2.length()) {
return false;
} else if (cs1 instanceof String && cs2 instanceof String) {
return cs1.equals(cs2);
} else {
return CharSequenceUtils.regionMatches(cs1, false, 0, cs2, 0, cs1.length());
}
Kind regards,
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)