home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d1xx
/
d185
/
iff.lha
/
SOURCE
/
remalloc.c
< prev
next >
Wrap
C/C++ Source or Header
|
1988-12-13
|
3KB
|
65 lines
/** RemAlloc.c **************************************************************/
/* ChipAlloc(), ExtAlloc(), RemAlloc(), RemFree(). */
/* ALLOCators which REMember the size allocated, for simpler freeing. */
/* */
/* Date Who Changes */
/* --------- --- -----------------------------------------------------------*/
/* 16-Jan-86 sss Created from DPaint/DAlloc.c */
/* 23-Jan-86 jhm Include Compiler.h, check for size > 0 in RemAlloc. */
/* 25-Jan-86 sss Added ChipNoClearAlloc,ExtNoClearAlloc */
/* */
/* By Jerry Morrison and Steve Shaw, Electronic Arts. */
/* This software is in the public domain. */
/* */
/* This version for the Commodore-Amiga computer. */
/* */
/****************************************************************************/
#ifndef COMPILER_H
#include "iff/compiler.h"
#endif
#include "exec/nodes.h"
#include "exec/memory.h"
#include "iff/remalloc.h"
/** RemAlloc ****************************************************************/
UBYTE *RemAlloc(size,flags) LONG size, flags; {
register LONG *p = NULL; /* (LONG *) for the sake of p++, below */
register LONG asize = size+4;
if (size > 0)
p = (LONG *)AllocMem(asize,flags);
if (p != NULL)
*p++ = asize; /* post-bump p to point at clients area*/
return((UBYTE *)p);
}
/** ChipAlloc ***************************************************************/
UBYTE *ChipAlloc(size) LONG size; {
return(RemAlloc(size, MEMF_CLEAR|MEMF_PUBLIC|MEMF_CHIP));
}
/** ChipNoClearAlloc ********************************************************/
UBYTE *ChipNoClearAlloc(size) LONG size; {
return(RemAlloc(size, MEMF_PUBLIC|MEMF_CHIP));
}
/** ExtAlloc ****************************************************************/
UBYTE *ExtAlloc(size) LONG size; {
return(RemAlloc(size, MEMF_CLEAR|MEMF_PUBLIC));
}
/** ExtNoClearAlloc *********************************************************/
UBYTE *ExtNoClearAlloc(size) LONG size; {
return(RemAlloc(size, MEMF_PUBLIC));
}
/** RemFree *****************************************************************/
UBYTE *RemFree(p) UBYTE *p; {
if (p != NULL) {
p -= 4;
FreeMem(p, *((LONG *)p));
}
return(NULL);
}