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
> @@ -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
> 

Reply via email to