diff --git a/coreutils/sort.c b/coreutils/sort.c index 0cbb6f597..9ff777851 100644 --- a/coreutils/sort.c +++ b/coreutils/sort.c @@ -380,7 +380,9 @@ static int compare_keys(const void *xarg, const void *yarg) /* If x > y, 1, else -1 */ retval = (x32 > y32) * 2 - 1; - } else + /* Here, -r has no effect! */ + return retval; + } if (!(option_mask32 & FLAG_no_tie_break)) { /* fallback sort */ flags = option_mask32; diff --git a/testsuite/sort.tests b/testsuite/sort.tests index c51a8e475..5375f93de 100755 --- a/testsuite/sort.tests +++ b/testsuite/sort.tests @@ -175,6 +175,19 @@ testing "sort file in place" \ 111 " "" +testing "sort -sr (stable and reverse) does NOT reverse 'stable' ordering" \ +"sort -k2 -r -s input" "\ +b 2 +d 2 +a 1 +c 1 +" "\ +a 1 +b 2 +c 1 +d 2 +" "" + # testing "description" "command(s)" "result" "infile" "stdin" exit $FAILCOUNT