Fix for a crash which happened when a document couldn't be opened.
[AROS-Contrib.git] / fish / icalc / memory.c
blob3bb6e7ddb50e8b75a5d0093e07a271084cbda2c0
1 /*
2 * memory routines to ease garbage collection when errors occur
3 * with parsing.
5 * MWS, March 20, 1991.
6 */
8 #include <stdlib.h>
9 #include "memory.h"
10 #include <exec/types.h>
12 static RemKey **gkey;
14 void *emalloc(n) /* check return from malloc() */
15 unsigned n;
17 extern void execerror(char *, char *);
18 char *p;
20 if ((p = malloc(n)) == NULL)
21 execerror("out of memory", NULL);
23 return p;
26 RemKey **rem_setkey(k) /* set key to be used for malloc's */
27 RemKey **k;
29 RemKey **oldkey = gkey;
30 gkey = k;
31 return oldkey;
34 void *rem_malloc(size) /* allocate memory, tag to list */
35 unsigned int size;
37 RemKey *k;
39 k = emalloc(sizeof(RemKey));
40 k->ptr = emalloc(size);
41 k->next = *gkey;
42 *gkey = k;
44 return k->ptr;
47 void rem_freeall() /* free all memory associated with a key */
49 RemKey *k;
51 while (*gkey)
53 k = (*gkey)->next;
54 free((*gkey)->ptr);
55 free(*gkey);
56 *gkey = k;
61 /* just free 'remember' info */
62 /* not being used in current implementation */
63 /********
64 void rem_freelinks()
66 RemKey *k;
68 while (*gkey)
70 k = (*gkey)->next;
71 free(*gkey);
72 *gkey = k;
75 *********/