[dev] Re: [sbase] [PATCH] sort: Fix -u option

From: Michael Forney <mforney_AT_mforney.org>
Date: Sat, 12 Mar 2016 15:48:13 -0800

On Sat, Mar 12, 2016 at 11:46:31AM -0800, Michael Forney wrote:
> In eb9bda878736344d1bef06d42e57e96de542a663, a bug was introduced in the
> handling of -1 return values from getline. Since the type of the len
> field in struct line is unsigned, the break condition was never true.
> This caused sort -u to never succeed.

This should be "sort -c" (here and in subject).

Please amend before committing.

> ---
> sort.c | 11 ++++++++---
> 1 file changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/sort.c b/sort.c
> index 5cfe801..90ee911 100644
> --- a/sort.c
> +++ b/sort.c
> _AT_@ -210,10 +210,15 @@ check(FILE *fp, const char *fname)
> {
> static struct line prev, cur, tmp;
> static size_t prevsize, cursize, tmpsize;
> + ssize_t len;
>
> - if (!prev.data && (prev.len = getline(&prev.data, &prevsize, fp)) < 0)
> - eprintf("getline:");
> - while ((cur.len = getline(&cur.data, &cursize, fp)) > 0) {
> + if (!prev.data) {
> + if ((len = getline(&prev.data, &prevsize, fp)) < 0)
> + eprintf("getline:");
> + prev.len = len;
> + }
> + while ((len = getline(&cur.data, &cursize, fp)) > 0) {
> + cur.len = len;
> if (uflag > slinecmp(&cur, &prev)) {
> if (!Cflag) {
> weprintf("disorder %s: ", fname);
> --
> 1.8.5.1
>
Received on Sun Mar 13 2016 - 00:48:13 CET

This archive was generated by hypermail 2.3.0 : Sun Mar 13 2016 - 08:00:05 CET