--- parser3/src/main/pa_globals.C 2003/04/01 07:59:08 1.152.2.19.2.10 +++ parser3/src/main/pa_globals.C 2003/04/01 11:11:55 1.152.2.19.2.11 @@ -5,7 +5,7 @@ Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char* IDENT_GLOBALS_C="$Date: 2003/04/01 07:59:08 $"; +static const char* IDENT_GLOBALS_C="$Date: 2003/04/01 11:11:55 $"; #include "pa_config_includes.h" @@ -266,36 +266,66 @@ pa_debug_xmlStrdup(const char *cur) { return(pa_xmlStrndup(cur, p - cur)); } -static const int PA_CHECKBUF_SIZE=100000000; -static bool maybe_valid_ptrs[PA_CHECKBUF_SIZE]; +const size_t HEADTAIL_SIZE=4; -static void* add_valid_ptr(void* ptr) { - uint h=hash_code((int)ptr); - maybe_valid_ptrs[h%PA_CHECKBUF_SIZE]=true; - return ptr; -} -static void* check_ptr(void* ptr) { - uint h=hash_code((uint)ptr); - if(!maybe_valid_ptrs[h%PA_CHECKBUF_SIZE]) +static size_t debug_size(size_t user_size) { + return user_size+HEADTAIL_SIZE*2; +} + +static void* fill_return_user(void* adebug_ptr, size_t pure_debug_size) { + char* debug_ptr=(char*)adebug_ptr; + memcpy(debug_ptr, "\xBB\xEE\xFF\x00", HEADTAIL_SIZE); + memcpy(debug_ptr+pure_debug_size-HEADTAIL_SIZE, "\xBB\xEE\xFF\x00", HEADTAIL_SIZE); + + // pAD + size_t raw_debug_size=GC_size(adebug_ptr); + for(size_t i=pure_debug_size; i %u\n", ptr, size); - if(pa_debug_xml) - return add_valid_ptr(GC_realloc(check_ptr(ptr), size)); - else - return GC_realloc(ptr, size); + if(pa_debug_xml) { + size=debug_size(size); + return fill_return_user( + GC_realloc( + check_return_debug(user_ptr), + size), + size); + } else + return GC_realloc(user_ptr, size); } static void pa_debug_GC_free(void*) {