diff options
Diffstat (limited to 'usr.bin')
-rw-r--r-- | usr.bin/m4/eval.c | 6 | ||||
-rw-r--r-- | usr.bin/m4/extern.h | 5 | ||||
-rw-r--r-- | usr.bin/m4/gnum4.c | 17 | ||||
-rw-r--r-- | usr.bin/m4/look.c | 12 | ||||
-rw-r--r-- | usr.bin/m4/main.c | 21 | ||||
-rw-r--r-- | usr.bin/m4/misc.c | 57 |
6 files changed, 72 insertions, 46 deletions
diff --git a/usr.bin/m4/eval.c b/usr.bin/m4/eval.c index 8e06bc9468f..6c0c8dcb399 100644 --- a/usr.bin/m4/eval.c +++ b/usr.bin/m4/eval.c @@ -1,4 +1,4 @@ -/* $OpenBSD: eval.c,v 1.50 2003/06/30 21:47:21 espie Exp $ */ +/* $OpenBSD: eval.c,v 1.51 2003/11/17 17:12:10 espie Exp $ */ /* $NetBSD: eval.c,v 1.7 1996/11/10 21:21:29 pk Exp $ */ /* @@ -37,7 +37,7 @@ #if 0 static char sccsid[] = "@(#)eval.c 8.2 (Berkeley) 4/27/95"; #else -static char rcsid[] = "$OpenBSD: eval.c,v 1.50 2003/06/30 21:47:21 espie Exp $"; +static char rcsid[] = "$OpenBSD: eval.c,v 1.51 2003/11/17 17:12:10 espie Exp $"; #endif #endif /* not lint */ @@ -386,7 +386,7 @@ expand_builtin(const char *argv[], int argc, int td) if (argc > 3) { char *temp; - temp = xalloc(strlen(argv[2])+1); + temp = xalloc(strlen(argv[2])+1, NULL); if (argc > 4) map(temp, argv[2], argv[3], argv[4]); else diff --git a/usr.bin/m4/extern.h b/usr.bin/m4/extern.h index 4257d3d4f98..6e84878694e 100644 --- a/usr.bin/m4/extern.h +++ b/usr.bin/m4/extern.h @@ -1,4 +1,4 @@ -/* $OpenBSD: extern.h,v 1.38 2003/06/30 22:13:32 espie Exp $ */ +/* $OpenBSD: extern.h,v 1.39 2003/11/17 17:12:10 espie Exp $ */ /* $NetBSD: extern.h,v 1.3 1996/01/13 23:25:24 pk Exp $ */ /*- @@ -99,7 +99,8 @@ extern void pbnum(int); extern void pbunsigned(unsigned long); extern void pbstr(const char *); extern void putback(int); -extern void *xalloc(size_t); +extern void *xalloc(size_t, const char *fmt, ...); +extern void *xrealloc(void *, size_t, const char *fmt, ...); extern char *xstrdup(const char *); extern void usage(void); extern void resizedivs(int); diff --git a/usr.bin/m4/gnum4.c b/usr.bin/m4/gnum4.c index b7c435cedf2..7273dd0c52b 100644 --- a/usr.bin/m4/gnum4.c +++ b/usr.bin/m4/gnum4.c @@ -1,4 +1,4 @@ -/* $OpenBSD: gnum4.c,v 1.25 2003/06/30 22:13:32 espie Exp $ */ +/* $OpenBSD: gnum4.c,v 1.26 2003/11/17 17:12:10 espie Exp $ */ /* * Copyright (c) 1999 Marc Espie @@ -212,9 +212,7 @@ addchars(const char *c, size_t n) bufsize = 1024; else bufsize *= 2; - buffer = realloc(buffer, bufsize); - if (buffer == NULL) - errx(1, "out of memory"); + buffer = xrealloc(buffer, bufsize, NULL); } memcpy(buffer+current, c, n); current += n; @@ -228,9 +226,7 @@ addchar(int c) bufsize = 1024; else bufsize *= 2; - buffer = realloc(buffer, bufsize); - if (buffer == NULL) - errx(1, "out of memory"); + buffer = xrealloc(buffer, bufsize, NULL); } buffer[current++] = c; } @@ -251,7 +247,8 @@ exit_regerror(int er, regex_t *re) char *errbuf; errlen = regerror(er, re, NULL, 0); - errbuf = xalloc(errlen); + errbuf = xalloc(errlen, + "malloc in regerror: %lu", (unsigned long)errlen); regerror(er, re, errbuf, errlen); errx(1, "%s at line %lu: regular expression error: %s", CURRENT_NAME, CURRENT_LINE, errbuf); @@ -458,7 +455,7 @@ dopatsubst(const char *argv[], int argc) if (error != 0) exit_regerror(error, &re); - pmatch = xalloc(sizeof(regmatch_t) * (re.re_nsub+1)); + pmatch = xalloc(sizeof(regmatch_t) * (re.re_nsub+1), NULL); do_subst(argv[2], &re, argc > 4 && argv[4] != NULL ? argv[4] : "", pmatch); free(pmatch); @@ -483,7 +480,7 @@ doregexp(const char *argv[], int argc) if (error != 0) exit_regerror(error, &re); - pmatch = xalloc(sizeof(regmatch_t) * (re.re_nsub+1)); + pmatch = xalloc(sizeof(regmatch_t) * (re.re_nsub+1), NULL); if (argv[4] == NULL || argc == 4) do_regexpindex(argv[2], &re, pmatch); else diff --git a/usr.bin/m4/look.c b/usr.bin/m4/look.c index 4d58dfa13f9..c455fe0963a 100644 --- a/usr.bin/m4/look.c +++ b/usr.bin/m4/look.c @@ -1,4 +1,4 @@ -/* $OpenBSD: look.c,v 1.15 2003/06/30 22:13:32 espie Exp $ */ +/* $OpenBSD: look.c,v 1.16 2003/11/17 17:12:10 espie Exp $ */ /* * Copyright (c) 1989, 1993 @@ -70,7 +70,7 @@ hash_alloc(s, u) size_t s; void *u UNUSED; { - void *storage = xalloc(s); + void *storage = xalloc(s, "hash alloc"); if (storage) memset(storage, 0, s); return storage; @@ -90,7 +90,7 @@ element_alloc(s, u) size_t s; void *u UNUSED; { - return xalloc(s); + return xalloc(s, "element alloc"); } void @@ -167,7 +167,7 @@ macro_define(const char *name, const char *defn) if (n->d->defn != null) free(n->d->defn); } else { - n->d = xalloc(sizeof(struct macro_definition)); + n->d = xalloc(sizeof(struct macro_definition), NULL); n->d->next = NULL; } setup_definition(n->d, defn, name); @@ -180,7 +180,7 @@ macro_pushdef(const char *name, const char *defn) struct macro_definition *d; n = create_entry(name); - d = xalloc(sizeof(struct macro_definition)); + d = xalloc(sizeof(struct macro_definition), NULL); d->next = n->d; n->d = d; setup_definition(n->d, defn, name); @@ -237,7 +237,7 @@ setup_builtin(const char *name, unsigned int type) n = create_entry(name); n->builtin_type = type; - n->d = xalloc(sizeof(struct macro_definition)); + n->d = xalloc(sizeof(struct macro_definition), NULL); n->d->defn = xstrdup(name); n->d->type = type; n->d->next = NULL; diff --git a/usr.bin/m4/main.c b/usr.bin/m4/main.c index 415f1c9f60c..04ea0dcf4ef 100644 --- a/usr.bin/m4/main.c +++ b/usr.bin/m4/main.c @@ -1,4 +1,4 @@ -/* $OpenBSD: main.c,v 1.63 2003/06/30 22:13:32 espie Exp $ */ +/* $OpenBSD: main.c,v 1.64 2003/11/17 17:12:10 espie Exp $ */ /* $NetBSD: main.c,v 1.12 1997/02/08 23:54:49 cgd Exp $ */ /*- @@ -43,7 +43,7 @@ static char copyright[] = #if 0 static char sccsid[] = "@(#)main.c 8.1 (Berkeley) 6/6/93"; #else -static char rcsid[] = "$OpenBSD: main.c,v 1.63 2003/06/30 22:13:32 espie Exp $"; +static char rcsid[] = "$OpenBSD: main.c,v 1.64 2003/11/17 17:12:10 espie Exp $"; #endif #endif /* not lint */ @@ -191,8 +191,8 @@ main(int argc, char *argv[]) initspaces(); STACKMAX = INITSTACKMAX; - mstack = (stae *)xalloc(sizeof(stae) * STACKMAX); - sstack = (char *)xalloc(STACKMAX); + mstack = (stae *)xalloc(sizeof(stae) * STACKMAX, NULL); + sstack = (char *)xalloc(STACKMAX, NULL); maxout = 0; outfile = NULL; @@ -623,10 +623,11 @@ dump_stack(struct position *t, int lev) static void enlarge_stack(void) { - STACKMAX *= 2; - mstack = realloc(mstack, sizeof(stae) * STACKMAX); - sstack = realloc(sstack, STACKMAX); - if (mstack == NULL || sstack == NULL) - errx(1, "Evaluation stack overflow (%lu)", - (unsigned long)STACKMAX); + STACKMAX += STACKMAX/2; + mstack = xrealloc(mstack, sizeof(stae) * STACKMAX, + "Evaluation stack overflow (%lu)", + (unsigned long)STACKMAX); + sstack = xrealloc(sstack, STACKMAX, + "Evaluation stack overflow (%lu)", + (unsigned long)STACKMAX); } diff --git a/usr.bin/m4/misc.c b/usr.bin/m4/misc.c index cc299e2442f..83c5bf4e2e7 100644 --- a/usr.bin/m4/misc.c +++ b/usr.bin/m4/misc.c @@ -1,4 +1,4 @@ -/* $OpenBSD: misc.c,v 1.29 2003/06/03 02:56:10 millert Exp $ */ +/* $OpenBSD: misc.c,v 1.30 2003/11/17 17:12:10 espie Exp $ */ /* $NetBSD: misc.c,v 1.6 1995/09/28 05:37:41 tls Exp $ */ /* @@ -37,13 +37,14 @@ #if 0 static char sccsid[] = "@(#)misc.c 8.1 (Berkeley) 6/6/93"; #else -static char rcsid[] = "$OpenBSD: misc.c,v 1.29 2003/06/03 02:56:10 millert Exp $"; +static char rcsid[] = "$OpenBSD: misc.c,v 1.30 2003/11/17 17:12:10 espie Exp $"; #endif #endif /* not lint */ #include <sys/types.h> #include <errno.h> #include <unistd.h> +#include <stdarg.h> #include <stdio.h> #include <stdlib.h> #include <stddef.h> @@ -147,10 +148,10 @@ initspaces() { int i; - strspace = xalloc(strsize+1); + strspace = xalloc(strsize+1, NULL); ep = strspace; endest = strspace+strsize; - buf = (char *)xalloc(bufsize); + buf = (char *)xalloc(bufsize, NULL); bufbase = buf; bp = buf; endpbb = buf + bufsize; @@ -185,10 +186,8 @@ enlarge_bufspace() char *newbuf; int i; - bufsize *= 2; - newbuf = realloc(buf, bufsize); - if (!newbuf) - errx(1, "too many characters pushed back"); + bufsize += bufsize/2; + newbuf = xrealloc(buf, bufsize, "too many characters pushed back"); for (i = 0; i < MAXINP; i++) bbase[i] = (bbase[i]-buf)+newbuf; bp = (bp-buf)+newbuf; @@ -254,21 +253,49 @@ resizedivs(int n) { int i; - outfile = (FILE **)realloc(outfile, sizeof(FILE *) * n); - if (outfile == NULL) - errx(1, "too many diverts %d", n); + outfile = (FILE **)xrealloc(outfile, sizeof(FILE *) * n, + "too many diverts %d", n); for (i = maxout; i < n; i++) outfile[i] = NULL; maxout = n; } void * -xalloc(size_t n) +xalloc(size_t n, const char *fmt, ...) { - char *p = malloc(n); + void *p = malloc(n); + + if (p == NULL) { + if (fmt == NULL) + err(1, "malloc"); + else { + va_list va; + + va_start(va, fmt); + verr(1, fmt, va); + va_end(va); + } + } + return p; +} - if (p == NULL) - err(1, "malloc"); +void * +xrealloc(void *old, size_t n, const char *fmt, ...) +{ + char *p = realloc(old, n); + + if (p == NULL) { + free(old); + if (fmt == NULL) + err(1, "realloc"); + else { + va_list va; + + va_start(va, fmt); + verr(1, fmt, va); + va_end(va); + } + } return p; } |