From 75c413ae771878c26de312874197d14e73579a2e Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Sun, 13 Aug 2006 00:47:16 +0000 Subject: align av_realloc() Originally committed as revision 5992 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavutil/mem.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'libavutil/mem.c') diff --git a/libavutil/mem.c b/libavutil/mem.c index 440328b7f1..61d886dc5d 100644 --- a/libavutil/mem.c +++ b/libavutil/mem.c @@ -101,22 +101,24 @@ void *av_malloc(unsigned int size) */ void *av_realloc(void *ptr, unsigned int size) { -#ifdef MEMALIGN_HACK - int diff; -#endif + void *ptr2; /* let's disallow possible ambiguous cases */ if(size > (INT_MAX-16) ) return NULL; -#ifdef MEMALIGN_HACK - //FIXME this isn't aligned correctly, though it probably isn't needed - if(!ptr) return av_malloc(size); - diff= ((char*)ptr)[-1]; - return realloc(ptr - diff, size + diff) + diff; -#else - return realloc(ptr, size); +#ifndef MEMALIGN_HACK + ptr= realloc(ptr, size); + if(((int)ptr&15) || !ptr) + return ptr; #endif + + ptr2= av_malloc(size); + if(ptr && ptr2) + memcpy(ptr2, ptr, size); + av_free(ptr); + + return ptr2; } /** -- cgit v1.2.3