00001
00002
00003
00004
00005
00006
00007
00008
00009 #include "util.h"
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 void (*MMoutOfMemory)(unsigned long) = MMout_of_memory;
00030
00031
00032
00033 void
00034 MMout_of_memory(unsigned long size)
00035 {
00036 (void) fflush(stdout);
00037 (void) fprintf(stderr, "\nout of memory allocating %lu bytes\n", size);
00038 exit(1);
00039 }
00040
00041
00042 void *
00043 MMalloc(unsigned long size)
00044 {
00045 void *p;
00046
00047 #ifdef IBMPC
00048 if (size > 65000L) {
00049 if (MMoutOfMemory != (void (*)(unsigned long)) 0) (*MMoutOfMemory)(size);
00050 return NIL(void);
00051 }
00052 #endif
00053 if (size == 0) size = sizeof(long);
00054 if ((p = malloc(size)) == NIL(void)) {
00055 if (MMoutOfMemory != (void (*)(unsigned long)) 0) (*MMoutOfMemory)(size);
00056 return NIL(void);
00057 }
00058 return p;
00059 }
00060
00061
00062 void *
00063 MMrealloc(void *obj, unsigned long size)
00064 {
00065 void *p;
00066
00067 #ifdef IBMPC
00068 if (size > 65000L) {
00069 if (MMoutOfMemory != (void (*)(unsigned long)) 0) (*MMoutOfMemory)(size);
00070 return NIL(void);
00071 }
00072 #endif
00073 if (obj == NIL(void)) return MMalloc(size);
00074 if (size <= 0) size = sizeof(long);
00075 if ((p = realloc(obj, size)) == NIL(void)) {
00076 if (MMoutOfMemory != (void (*)(unsigned long)) 0) (*MMoutOfMemory)(size);
00077 return NIL(void);
00078 }
00079 return p;
00080 }
00081
00082
00083 void
00084 MMfree(void *obj)
00085 {
00086 if (obj != 0) {
00087 free(obj);
00088 }
00089 }