=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mail/list.c,v retrieving revision 1.6 retrieving revision 1.7 diff -c -r1.6 -r1.7 *** src/usr.bin/mail/list.c 1997/07/14 00:24:28 1.6 --- src/usr.bin/mail/list.c 1997/07/31 02:36:33 1.7 *************** *** 1,4 **** ! /* $OpenBSD: list.c,v 1.6 1997/07/14 00:24:28 millert Exp $ */ /* $NetBSD: list.c,v 1.7 1997/07/09 05:23:36 mikel Exp $ */ /* --- 1,4 ---- ! /* $OpenBSD: list.c,v 1.7 1997/07/31 02:36:33 millert Exp $ */ /* $NetBSD: list.c,v 1.7 1997/07/09 05:23:36 mikel Exp $ */ /* *************** *** 38,44 **** #if 0 static char sccsid[] = "@(#)list.c 8.4 (Berkeley) 5/1/95"; #else ! static char rcsid[] = "$OpenBSD: list.c,v 1.6 1997/07/14 00:24:28 millert Exp $"; #endif #endif /* not lint */ --- 38,44 ---- #if 0 static char sccsid[] = "@(#)list.c 8.4 (Berkeley) 5/1/95"; #else ! static char rcsid[] = "$OpenBSD: list.c,v 1.7 1997/07/31 02:36:33 millert Exp $"; #endif #endif /* not lint */ *************** *** 398,405 **** { register char c, *cp, *cp2, quotec; int argn; ! char linebuf[BUFSIZ]; argn = 0; cp = line; for (;;) { --- 398,409 ---- { register char c, *cp, *cp2, quotec; int argn; ! char *linebuf; ! size_t linebufsize = BUFSIZ; + if ((linebuf = (char *)malloc(linebufsize)) == NULL) + panic("Out of memory"); + argn = 0; cp = line; for (;;) { *************** *** 414,419 **** --- 418,430 ---- cp2 = linebuf; quotec = '\0'; while ((c = *cp) != '\0') { + /* Alloc more space if necessary */ + if (cp2 - linebuf == linebufsize - 1) { + linebufsize += BUFSIZ; + if (!(linebuf = realloc(linebuf, linebufsize))) + panic("Out of memory"); + cp2 = linebuf + (linebufsize - BUFSIZ) - 1; + } cp++; if (quotec != '\0') { if (c == quotec) *************** *** 479,484 **** --- 490,496 ---- argv[argn++] = savestr(linebuf); } argv[argn] = NULL; + (void)free(linebuf); return(argn); }