summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--coreutils/sort.c4
-rwxr-xr-xtestsuite/sort.tests13
2 files changed, 16 insertions, 1 deletions
diff --git a/coreutils/sort.c b/coreutils/sort.c
index 0cbb6f5..9ff7778 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 c51a8e4..5375f93 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