mirror of https://git.ffmpeg.org/ffmpeg.git
align av_realloc()
Originally committed as revision 5992 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
4bff9ef9d0
commit
75c413ae77
|
@ -101,22 +101,24 @@ void *av_malloc(unsigned int size)
|
||||||
*/
|
*/
|
||||||
void *av_realloc(void *ptr, unsigned int size)
|
void *av_realloc(void *ptr, unsigned int size)
|
||||||
{
|
{
|
||||||
#ifdef MEMALIGN_HACK
|
void *ptr2;
|
||||||
int diff;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* let's disallow possible ambiguous cases */
|
/* let's disallow possible ambiguous cases */
|
||||||
if(size > (INT_MAX-16) )
|
if(size > (INT_MAX-16) )
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
#ifdef MEMALIGN_HACK
|
#ifndef MEMALIGN_HACK
|
||||||
//FIXME this isn't aligned correctly, though it probably isn't needed
|
ptr= realloc(ptr, size);
|
||||||
if(!ptr) return av_malloc(size);
|
if(((int)ptr&15) || !ptr)
|
||||||
diff= ((char*)ptr)[-1];
|
return ptr;
|
||||||
return realloc(ptr - diff, size + diff) + diff;
|
|
||||||
#else
|
|
||||||
return realloc(ptr, size);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
ptr2= av_malloc(size);
|
||||||
|
if(ptr && ptr2)
|
||||||
|
memcpy(ptr2, ptr, size);
|
||||||
|
av_free(ptr);
|
||||||
|
|
||||||
|
return ptr2;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue