/******************************************************************** * * calloc.c - memory allocator for sets of elements * zalloc - memory allocator like malloc only zeros storage. * * BYTE *calloc(nelem,sizelem) * UWORD nelem, sizelem; * * Returns a pointer to a region of (zero filled) memory large * enough to hold 'nelem' items each of size 'sizelem'. * Returns NULL if not enough memory, or allocation too large * (on 8086). * * BYTE *zalloc(nbytes) * UWORD nbytes; * * Returns a pointer to a region of zero filled memory nbytes long. * Returns NULL if not enough memory. * *********************************************************************/ #include "portab.h" #include "osif.h" BYTE * zalloc(nbytes) /* CLEAR FUNCTION ***********/ UWORD nbytes; /* number of bytes */ { REG BYTE *rp; /* pointer to region */ BYTE *malloc(); if( (rp = malloc(nbytes)) == NULLPTR) return(NULLPTR); blkfill( rp, NULL, nbytes ); return(rp); } BYTE * calloc(nelem,sizelem) /* CLEAR FUNCTION ***********/ UWORD nelem, /* number of elements */ sizelem; /* size of element */ { REG LONG size; size = sizelem*nelem; #if I8086 if( size > 65535L ) return NULLPTR; #endif return zalloc((UWORD)size); } e = sizelem*nelem; #if I8086 if( size > 65535L ) return NULLPTR; #endif return zalloc((UWORD)size); } e = sizelem*nelem; #if I8086 if( size > 65535L ) return NULLPTR; #endif return zalloc((UWORD)size); }