--- ray/src/common/bmalloc.c 1991/11/12 16:55:20 2.1 +++ ray/src/common/bmalloc.c 2003/07/17 09:21:29 2.5 @@ -1,49 +1,47 @@ -/* Copyright (c) 1991 Regents of the University of California */ - #ifndef lint -static char SCCSid[] = "$SunId$ LBL"; +static const char RCSid[] = "$Id: bmalloc.c,v 2.5 2003/07/17 09:21:29 schorsch Exp $"; #endif - /* * Bmalloc provides basic memory allocation without overhead (no free lists). * Use only to take the load off of malloc for all those * piddling little requests that you never expect to free. * Bmalloc defers to malloc for big requests. * Bfree should hand memory to bmalloc, but it usually fails here. + * + * External symbols declared in standard.h */ -#define NULL 0 +#include "copyright.h" +#include + +#include "rtmisc.h" + #ifndef MBLKSIZ #define MBLKSIZ 16376 /* size of memory allocation block */ #endif #define WASTEFRAC 12 /* don't waste more than a fraction */ -#ifndef ALIGN -#define ALIGN int /* type for alignment */ +#ifndef ALIGNT +#define ALIGNT double /* type for alignment */ #endif -#define BYTES_WORD sizeof(ALIGN) +#define BYTES_WORD sizeof(ALIGNT) -extern char *malloc(); - static char *bposition = NULL; -static unsigned nremain = 0; +static unsigned int nremain = 0; char * -bmalloc(n) /* allocate a block of n bytes, no refunds */ -register unsigned n; +bmalloc(n) /* allocate a block of n bytes */ +register unsigned int n; { if (n > nremain && (n > MBLKSIZ || nremain > MBLKSIZ/WASTEFRAC)) return(malloc(n)); /* too big */ n = (n+(BYTES_WORD-1))&~(BYTES_WORD-1); /* word align */ - if (n > nremain) { - if ((bposition = malloc((unsigned)MBLKSIZ)) == NULL) { - nremain = 0; - return(NULL); - } - nremain = MBLKSIZ; + if (n > nremain && (bposition = (char *)malloc(nremain = MBLKSIZ)) == NULL) { + nremain = 0; + return(NULL); } bposition += n; nremain -= n; @@ -51,13 +49,14 @@ register unsigned n; } +void bfree(p, n) /* free random memory */ register char *p; -register unsigned n; +register unsigned int n; { - register unsigned bsiz; + register unsigned int bsiz; /* check alignment */ - bsiz = BYTES_WORD - ((unsigned)p&(BYTES_WORD-1)); + bsiz = BYTES_WORD - ((unsigned int)p&(BYTES_WORD-1)); if (bsiz < BYTES_WORD) { p += bsiz; n -= bsiz;