--- parser3/src/main/pa_pool.C 2002/10/15 15:12:57 1.57 +++ parser3/src/main/pa_pool.C 2003/01/29 12:02:23 1.59.2.2 @@ -1,18 +1,51 @@ /** @file Parser: pool class. - Copyright (c) 2001, 2002 ArtLebedev Group (http://www.artlebedev.com) + Copyright (c) 2001, 2003 ArtLebedev Group (http://www.artlebedev.com) Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char* IDENT_POOL_C="$Date: 2002/10/15 15:12:57 $"; +static const char* IDENT_POOL_C="$Date: 2003/01/29 12:02:23 $"; #include "pa_pool.h" #include "pa_exception.h" #include "pa_common.h" #include "pa_sapi.h" -#include "pa_charset.h" +#include "pa_value_includes.h" +static void *fail_alloc(char *what, size_t size) { + SAPI::die("out of memory: failed to %s %u bytes", + what, size); + + // never reached + return 0; +} + +void *pa_malloc(size_t size) { + if(void *result=malloc(size)) + return result; + + return fail_alloc("allocate", size); +} + +void *pa_calloc(size_t size) { + if(void *result=calloc(1, size)) + return result; + + return fail_alloc("allocate", size); +} +void pa_free(void *ptr) { + free(ptr); +} + +void *pa_realloc(void *ptr, size_t size) { + if(void *result=realloc(ptr, size)) + return result; + + return fail_alloc("reallocate to", size); +} + +/* Pool::Pool(void *astorage) : fstorage(astorage), fcontext(0), ftotal_allocated(0), ftotal_times(0), @@ -21,6 +54,9 @@ Pool::Pool(void *astorage) : } void *Pool::copy(const void *buf, const size_t size) { + if(!buf || !size) + return 0; + void *result=malloc(size); memcpy(result, buf, size); return result; @@ -102,5 +138,5 @@ GdomeDOMString_auto_ptr Pool::transcode( return get_source_charset().transcode(s); } - #endif +*/