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.
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;
--EXPECT--
*** Testing strnatcasecmp() : variation ***
int(1)
-int(6)
-int(-2)
+int(1)
+int(-1)
int(-1)
int(0)
int(0)