sort: fix --debug key highlighting when key start after key end
authorPádraig Brady <P@draigBrady.com>
Wed, 2 Feb 2011 23:08:42 +0000 (23:08 +0000)
committerPádraig Brady <P@draigBrady.com>
Thu, 3 Feb 2011 10:19:34 +0000 (10:19 +0000)
This case was overlooked in commit bdde34f9, 2010-08-05,
"sort: tune and refactor --debug code, and fix minor underlining bug"

* src/sort.c (debug_key):  Don't adjust the key end when
it's before the key start.
* tests/misc/sort-debug-keys: Add a test case.

src/sort.c
tests/misc/sort-debug-keys

index 06b0d95..13954cb 100644 (file)
@@ -2214,7 +2214,9 @@ debug_key (struct line const *line, struct keyfield const *key)
 
           char *tighter_lim = beg;
 
-          if (key->month)
+          if (lim < beg)
+            tighter_lim = lim;
+          else if (key->month)
             getmonth (beg, &tighter_lim);
           else if (key->general_numeric)
             ignore_value (strtold (beg, &tighter_lim));
index daa6c18..238c33e 100755 (executable)
@@ -234,6 +234,10 @@ _
 _
 >a
  _
+A>chr10
+     ^ no match for key
+B>chr1
+     ^ no match for key
 EOF
 
 (
@@ -275,6 +279,9 @@ env printf '1a\x002b\x00' | sort -s -n -z --debug
 
 # Check that \0 and \t intermix.
 printf '\0\ta\n' | sort -s -k2b,2 --debug | tr -d '\0'
+
+# Check that key end before key start is not underlined
+printf 'A\tchr10\nB\tchr1\n' | sort -s -k2.4b,2.3n --debug
 ) > out
 
 compare out exp || fail=1