diff options
Diffstat (limited to 'lib/libmalloc/emalloc.c')
-rw-r--r-- | lib/libmalloc/emalloc.c | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/lib/libmalloc/emalloc.c b/lib/libmalloc/emalloc.c new file mode 100644 index 000000000000..13a7b9ab0244 --- /dev/null +++ b/lib/libmalloc/emalloc.c @@ -0,0 +1,69 @@ +/* Author: Mark Moraes <moraes@csri.toronto.edu> */ + +/*LINTLIBRARY*/ + +#include "defs.h" +#include "globals.h" + +RCSID("$Id: emalloc.c,v 1.1 1994/03/06 22:59:31 nate Exp $") + +/* + * malloc which dies if it can't allocate enough storage. + */ +univptr_t +emalloc(nbytes) +size_t nbytes; +{ + univptr_t cp = malloc(nbytes); + + if (cp == 0) { + (void) fputs("No more memory for emalloc\n", stderr); +#ifdef DEBUG + (void) fflush(stderr); + (void) fflush(_malloc_statsfile); + abort(); +#else + exit(EXIT_FAILURE); +#endif + } + + return(cp); +} + +/* + * realloc which dies if it can't allocate enough storage. + */ +univptr_t +erealloc(ptr, nbytes) +univptr_t ptr; +size_t nbytes; +{ + univptr_t cp = realloc(ptr, nbytes); + + if (cp == 0) { + (void) fputs("No more memory for erealloc\n", stderr); +#ifdef DEBUG + (void) fflush(stderr); + (void) fflush(_malloc_statsfile); + abort(); +#else + exit(EXIT_FAILURE); +#endif + } + + return(cp); +} + +/* + * calloc which dies if it can't allocate enough storage. + */ +univptr_t +ecalloc(nelem, sz) +size_t nelem, sz; +{ + size_t nbytes = nelem * sz; + univptr_t cp = emalloc(nbytes); + + (void) memset((univptr_t) cp, 0, (memsize_t) nbytes); + return(cp); +} |