From e9bfb97808dea513901338a46cbd2966ddc0f231 Mon Sep 17 00:00:00 2001 From: Michael Forney Date: Wed, 1 Jan 2020 12:16:16 -0800 Subject: [PATCH] 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. --- sort.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/sort.c b/sort.c index dfc383f..a51997f 100644 --- 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;