1
0
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:
Anatol Belski
2014-09-15 12:54:46 +02:00
parent 836fd73cce
commit 172ca172d1
2 changed files with 3 additions and 19 deletions

View File

@@ -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;

View File

@@ -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)