mirror of
https://github.com/php/php-src.git
synced 2026-03-24 08:12:21 +01:00
correct fix to the natcmp_ex
Till now the actualy length diff between the strings was under circumstances returned. Whereby for a compare function only return values of (1, 0, -1) make sense. Thus the old behavior isn't present anymore, natcmp_ex now behaves as a standard compare function.
This commit is contained in:
@@ -109,23 +109,7 @@ PHPAPI int strnatcmp_ex(char const *a, size_t a_len, char const *b, size_t b_len
|
||||
short leading = 1;
|
||||
|
||||
if (a_len == 0 || b_len == 0) {
|
||||
result = 0;
|
||||
|
||||
if (a_len > b_len) {
|
||||
if (a_len - b_len <= INT_MAX) {
|
||||
result = (int)(a_len - b_len);
|
||||
} else {
|
||||
result = 1;
|
||||
}
|
||||
} else {
|
||||
if (b_len - a_len <= (size_t)(-INT_MIN)) {
|
||||
result = -(int)(b_len - a_len);
|
||||
} else {
|
||||
result = -1;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
return (a_len == b_len ? 0 : (a_len > b_len ? 1 : -1));
|
||||
}
|
||||
|
||||
ap = a;
|
||||
|
||||
@@ -48,8 +48,8 @@ str_dump($a, $b);
|
||||
--EXPECT--
|
||||
*** Testing strnatcasecmp() : variation ***
|
||||
int(1)
|
||||
int(6)
|
||||
int(-2)
|
||||
int(1)
|
||||
int(-1)
|
||||
int(-1)
|
||||
int(0)
|
||||
int(0)
|
||||
|
||||
Reference in New Issue
Block a user