Initial memory allocation for fields was off-by-one.

PR:		bin/100443
MFC after:	3 days
This commit is contained in:
Ruslan Ermilov 2006-09-15 13:33:32 +00:00
parent 1007c98db6
commit 8a70619712
2 changed files with 19 additions and 1 deletions

View File

@ -29,7 +29,7 @@ CLEANFILES+= nawk.1
nawk.1: awk.1
cat ${.ALLSRC} > ${.TARGET}
.for f in b.c main.c run.c
.for f in b.c lib.c main.c run.c
${f}: ${AWKSRC}/${f} ${.CURDIR}/${f}.diff
patch -s -b .orig -o ${.TARGET} < ${.CURDIR}/${f}.diff ${AWKSRC}/${f}
CLEANFILES+= ${f}

18
usr.bin/awk/lib.c.diff Normal file
View File

@ -0,0 +1,18 @@
$FreeBSD$
Index: lib.c
===================================================================
RCS file: /home/ncvs/src/contrib/one-true-awk/lib.c,v
retrieving revision 1.1.1.4
diff -u -p -r1.1.1.4 lib.c
--- lib.c 16 May 2005 19:11:33 -0000 1.1.1.4
+++ lib.c 15 Sep 2006 10:10:59 -0000
@@ -58,7 +58,7 @@ static Cell dollar1 = { OCELL, CFLD, NUL
void recinit(unsigned int n)
{
if ( (record = (char *) malloc(n)) == NULL
- || (fields = (char *) malloc(n)) == NULL
+ || (fields = (char *) malloc(n+1)) == NULL
|| (fldtab = (Cell **) malloc((nfields+1) * sizeof(Cell *))) == NULL
|| (fldtab[0] = (Cell *) malloc(sizeof(Cell))) == NULL )
FATAL("out of space for $0 and fields");