=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/file/Attic/apprentice.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- src/usr.bin/file/Attic/apprentice.c 1998/07/10 15:05:13 1.5 +++ src/usr.bin/file/Attic/apprentice.c 1998/08/19 17:20:01 1.6 @@ -1,4 +1,4 @@ -/* $OpenBSD: apprentice.c,v 1.5 1998/07/10 15:05:13 mickey Exp $ */ +/* $OpenBSD: apprentice.c,v 1.6 1998/08/19 17:20:01 deraadt Exp $ */ /* * apprentice - make one pass through /etc/magic, learning its secrets. @@ -36,7 +36,7 @@ #include "file.h" #ifndef lint -static char *moduleid = "$OpenBSD: apprentice.c,v 1.5 1998/07/10 15:05:13 mickey Exp $"; +static char *moduleid = "$OpenBSD: apprentice.c,v 1.6 1998/08/19 17:20:01 deraadt Exp $"; #endif /* lint */ #define EATAB {while (isascii((unsigned char) *l) && \ @@ -183,14 +183,19 @@ #define ALLOC_INCR 20 if (nd+1 >= maxmagic){ + struct magic *mtmp; + maxmagic += ALLOC_INCR; - if ((magic = (struct magic *) realloc(magic, + if ((mtmp = (struct magic *) realloc(magic, sizeof(struct magic) * maxmagic)) == NULL) { warn("malloc"); - if (check) + if (check) { + if (magic) + free(magic); + magic = mtmp; return -1; - else + } else exit(1); } memset(&magic[*ndx], 0, sizeof(struct magic) * ALLOC_INCR);