sort: in -s handling, return 1/-1, not 1/0 compare result
authorDenys Vlasenko <vda.linux@googlemail.com>
Thu, 22 Feb 2018 09:54:55 +0000 (10:54 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Thu, 22 Feb 2018 09:54:55 +0000 (10:54 +0100)
function                                             old     new   delta
compare_keys                                         794     795      +1

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
coreutils/sort.c

index 8ffd0cf44198754eeb4762bfe8970128d6b272cd..c24b62681697d1c5595fe97a14f85b95ba30a590 100644 (file)
@@ -345,7 +345,7 @@ static int compare_keys(const void *xarg, const void *yarg)
                /* So far lines are "the same" */
 
                if (option_mask32 & FLAG_s) {
-                       /* "Stable sort": later line is "smaller",
+                       /* "Stable sort": later line is "greater than",
                         * IOW: do not allow qsort() to swap equal lines.
                         */
                        uint32_t *p32;
@@ -362,7 +362,8 @@ static int compare_keys(const void *xarg, const void *yarg)
                        p32 = (void*)(line + len);
                        y32 = *p32;
 
-                       retval = x32 > y32;
+                       /* If x > y, 1, else -1 */
+                       retval = (x32 > y32) * 2 - 1;
                } else
                if (!(option_mask32 & FLAG_no_tie_break)) {
                        /* fallback sort */