home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Fred Fish Collection 1.5
/
ffcollection-1-5-1992-11.iso
/
ff_disks
/
400-499
/
ff472.lzh
/
ICalc
/
src
/
memory.c
< prev
next >
Wrap
C/C++ Source or Header
|
1991-04-17
|
1KB
|
75 lines
/*
* memory routines to ease garbage collection when errors occur
* with parsing.
*
* MWS, March 20, 1991.
*/
#include <stdlib.h>
#include "memory.h"
static RemKey **gkey;
void *emalloc(n) /* check return from malloc() */
unsigned n;
{
extern void execerror(char *, char *);
char *p;
if ((p = malloc(n)) == NULL)
execerror("out of memory", NULL);
return p;
}
RemKey **rem_setkey(k) /* set key to be used for malloc's */
RemKey **k;
{
RemKey **oldkey = gkey;
gkey = k;
return oldkey;
}
void *rem_malloc(size) /* allocate memory, tag to list */
unsigned int size;
{
RemKey *k;
k = emalloc(sizeof(RemKey));
k->ptr = emalloc(size);
k->next = *gkey;
*gkey = k;
return k->ptr;
}
void rem_freeall() /* free all memory associated with a key */
{
RemKey *k;
while (*gkey)
{
k = (*gkey)->next;
free((*gkey)->ptr);
free(*gkey);
*gkey = k;
}
}
/* just free 'remember' info */
/* not being used in current implementation */
/********
void rem_freelinks()
{
RemKey *k;
while (*gkey)
{
k = (*gkey)->next;
free(*gkey);
*gkey = k;
}
}
*********/