From: Jim Meyering Date: Thu, 13 Jan 2000 07:34:44 +0000 (+0000) Subject: (fillbuf): Avoid quadratic behavior with long lines. X-Git-Tag: FILEUTILS-4_0p~217 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a69a2d68560d3d1bc2cf9111d2d92d71d98b760d;p=thirdparty%2Fcoreutils.git (fillbuf): Avoid quadratic behavior with long lines. Also, stop worrying about ancient memchr bug (misbehavior when size is zero), since other code doesn't worry either. --- diff --git a/src/sort.c b/src/sort.c index 4bfa853c2e..f6e76bcec8 100644 --- a/src/sort.c +++ b/src/sort.c @@ -1,5 +1,5 @@ /* sort - sort lines of text (with all kinds of options). - Copyright (C) 88, 1991-1999 Free Software Foundation, Inc. + Copyright (C) 88, 1991-2000 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -543,10 +543,9 @@ fillbuf (struct buffer *buf, FILE *fp) int cc; memmove (buf->buf, buf->buf + buf->used - buf->left, buf->left); - buf->used = buf->left; + cc = buf->used = buf->left; - while (!feof (fp) && (buf->used == 0 - || !memchr (buf->buf, eolchar, buf->used))) + while (!feof (fp) && !memchr (buf->buf + buf->used - cc, eolchar, cc)) { if (buf->used == buf->alloc) {