From 267dd842167f84ca8f4338702c295c457b6ecf6d Mon Sep 17 00:00:00 2001 From: kramm Date: Fri, 5 Nov 2004 17:34:15 +0000 Subject: [PATCH] added rfx_realloc(). --- lib/rfxswf.c | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 58 insertions(+), 3 deletions(-) diff --git a/lib/rfxswf.c b/lib/rfxswf.c index 8513966..3ee5c6e 100644 --- a/lib/rfxswf.c +++ b/lib/rfxswf.c @@ -50,25 +50,73 @@ // memory allocation -void* rfxalloc(int size) +void* rfx_alloc(int size) { void*ptr; + if(size == 0) { + *(int*)0 = 0xdead; + fprintf(stderr, "Warning: Zero alloc\n"); + return 0; + } + + ptr = malloc(size); + if(!ptr) { + fprintf(stderr, "FATAL: Out of memory\n"); + /* TODO: we should send a signal, so that the debugger kicks in */ + exit(1); + } + return ptr; +} +void* rfx_realloc(void*data, int size) +{ + void*ptr; + if(size == 0) { + *(int*)0 = 0xdead; + fprintf(stderr, "Warning: Zero realloc\n"); + rfx_free(data); + return 0; + } + if(!data) { + ptr = malloc(size); + } else { + ptr = realloc(data, size); + } + + if(!ptr) { + fprintf(stderr, "FATAL: Out of memory\n"); + /* TODO: we should send a signal, so that the debugger kicks in */ + exit(1); + } + return ptr; +} +void* rfx_calloc(int size) +{ + void*ptr; + if(size == 0) { + *(int*)0 = 0xdead; + fprintf(stderr, "Warning: Zero alloc\n"); + return 0; + } #ifdef HAVE_CALLOC ptr = calloc(size); #else ptr = malloc(size); - memset(ptr, 0, size); #endif if(!ptr) { fprintf(stderr, "FATAL: Out of memory\n"); /* TODO: we should send a signal, so that the debugger kicks in */ exit(1); } +#ifndef HAVE_CALLOC + memset(ptr, 0, size); +#endif return ptr; } -void rfxdealloc(void*ptr) +void rfx_free(void*ptr) { + if(!ptr) + return; free(ptr); } @@ -835,6 +883,13 @@ void swf_ResetTag(TAG*tag, U16 id) tag->id = id; } +TAG* swf_CopyTag(TAG*tag, TAG*to_copy) +{ + tag = swf_InsertTag(tag, to_copy->id); + swf_SetBlock(tag, to_copy->data, to_copy->len); + return tag; +} + int swf_DeleteTag(TAG * t) { if (!t) return -1; -- 1.7.10.4