=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/less/line.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- src/usr.bin/less/line.c 2003/06/18 18:39:52 1.6 +++ src/usr.bin/less/line.c 2004/04/08 15:18:28 1.7 @@ -79,9 +79,9 @@ static int expand_linebuf() { - int new_size = size_linebuf + LINEBUF_SIZE; - char *new_buf = (char *) calloc(new_size, sizeof(char)); - char *new_attr = (char *) calloc(new_size, sizeof(char)); + int new_size = size_linebuf * 2; + char *new_buf = (char *) realloc(linebuf, new_size); + char *new_attr = (char *) realloc(attr, new_size); if (new_buf == NULL || new_attr == NULL) { if (new_attr != NULL) @@ -90,10 +90,8 @@ free(new_buf); return 1; } - memcpy(new_buf, linebuf, size_linebuf * sizeof(char)); - memcpy(new_attr, attr, size_linebuf * sizeof(char)); - free(attr); - free(linebuf); + memset(new_buf + size_linebuf, 0, new_size - size_linebuf); + memset(new_attr + size_linebuf, 0, new_size - size_linebuf); linebuf = new_buf; attr = new_attr; size_linebuf = new_size;