#ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include #include #include "px_intern.h" #include "paradox-mp.h" #include "px_error.h" #define MAXMEM 10000 struct mem { void *ptr; int size; char *caller; }; static struct mem memlist[MAXMEM]; static int peakmem = 0; static int summem = 0; PXLIB_API void PXLIB_CALL PX_mp_init() { memset(memlist, 0, MAXMEM*sizeof(struct mem)); } PXLIB_API void * PXLIB_CALL PX_mp_malloc(pxdoc_t *p, size_t size, const char *caller) { void *a; int i; a = (void *) malloc(size); i = 0; while((i < MAXMEM) && (memlist[i].ptr != NULL)) { i++; } if(i == MAXMEM) { fprintf(stderr, _("Aiii, no more space for new memory block.")); fprintf(stderr, "\n"); } memlist[i].ptr = a; memlist[i].size = size; summem += size; peakmem = (summem > peakmem) ? summem : peakmem; memlist[i].caller = strdup(caller); return(a); } PXLIB_API void * PXLIB_CALL PX_mp_realloc(pxdoc_t *p, void *mem, size_t size, const char *caller) { void *a; int i; a = realloc(mem, size); for(i=0; i