[git commit] sort: in -s handling, return 1/-1, not 1/0 compare result

Denys Vlasenko vda.linux at googlemail.com
Thu Feb 22 09:54:55 UTC 2018


commit: https://git.busybox.net/busybox/commit/?id=427ae18348a908719ff60383b33041bce5e5393e
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
compare_keys                                         794     795      +1

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 coreutils/sort.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/coreutils/sort.c b/coreutils/sort.c
index 8ffd0cf44..c24b62681 100644
--- a/coreutils/sort.c
+++ b/coreutils/sort.c
@@ -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 */


More information about the busybox-cvs mailing list