commit e9bfb97808dea513901338a46cbd2966ddc0f231
parent a8dc42e6b5aa0926ec3bea32dd17bd319d0f3b99
Author: Michael Forney <mforney@mforney.org>
Date: Wed, 1 Jan 2020 12:16:16 -0800
sort: Consider end field in keydef when additional fields are present
Currently, if the delimiter is found after the last field of a keydef,
only up to the beginning of the field is considered. This breaks `sort
-k N,N`, as well as whenever the sorted order comes down to that last
field.
Thanks to Richard Ipsum for the bug report and proposed patch.
Diffstat:
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/sort.c b/sort.c
@@ -66,11 +66,10 @@ skipcolumn(struct line *a, int skip_to_next_col)
if (fieldsep) {
if ((s = memmem(a->data, a->len, fieldsep, fieldseplen))) {
- if (skip_to_next_col) {
+ if (skip_to_next_col)
s += fieldseplen;
- a->len -= s - a->data;
- a->data = s;
- }
+ a->len -= s - a->data;
+ a->data = s;
} else {
a->data += a->len - 1;
a->len = 1;