From 37c9de4c4a1f96196975c8688537799c0a09d57e Mon Sep 17 00:00:00 2001 From: Sam Hocevar Date: Thu, 25 Jan 2007 19:55:20 +0000 Subject: [PATCH] * Crap! Fixed memory manager initialisation. And sticking that into the 0.6.1 tarball, no one will notice! (ha ha ha) --- src/lib-mem.c | 10 +++++++++- src/libzzuf.c | 1 + src/libzzuf.h | 3 +++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/lib-mem.c b/src/lib-mem.c index 86f7e40..8c78b59 100644 --- a/src/lib-mem.c +++ b/src/lib-mem.c @@ -102,6 +102,13 @@ static int dummy_offset = 0; #define DUMMY_START ((uintptr_t)dummy_buffer) #define DUMMY_STOP ((uintptr_t)dummy_buffer + DUMMY_BYTES) +void _zz_mem_init(void) +{ + LOADSYM(calloc); + LOADSYM(malloc); + LOADSYM(realloc); +} + void *NEW(calloc)(size_t nmemb, size_t size) { void *ret; @@ -144,7 +151,8 @@ void NEW(free)(void *ptr) void *NEW(realloc)(void *ptr, size_t size) { void *ret; - if((uintptr_t)ptr >= DUMMY_START && (uintptr_t)ptr < DUMMY_STOP) + if(!ORIG(realloc) + || ((uintptr_t)ptr >= DUMMY_START && (uintptr_t)ptr < DUMMY_STOP)) { ret = dummy_buffer + dummy_offset; memcpy(ret, ptr, size); diff --git a/src/libzzuf.c b/src/libzzuf.c index 37256de..d0bc3f7 100644 --- a/src/libzzuf.c +++ b/src/libzzuf.c @@ -111,6 +111,7 @@ void _zz_init(void) _zz_network = 1; _zz_fd_init(); + _zz_mem_init(); _zz_sys_init(); tmp = getenv("ZZUF_STDIN"); diff --git a/src/libzzuf.h b/src/libzzuf.h index 8dc6a80..ef0fd55 100644 --- a/src/libzzuf.h +++ b/src/libzzuf.h @@ -53,3 +53,6 @@ extern int _zz_memory; extern int _zz_network; extern int _zz_autoinc; +/* This function is needed to initialise memory functions */ +extern void _zz_mem_init(void); +