mem: add support for _aligned_malloc() as found on Windows
The check uses check_func_header, since this function is conditionally available depending on the targeted MSVCRT version. Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
parent
7146177d18
commit
be1a839ca6
4
configure
vendored
4
configure
vendored
@ -1051,6 +1051,7 @@ HAVE_LIST="
|
||||
$ARCH_EXT_LIST
|
||||
$HAVE_LIST_PUB
|
||||
$THREADS_LIST
|
||||
aligned_malloc
|
||||
aligned_stack
|
||||
alsa_asoundlib_h
|
||||
altivec_h
|
||||
@ -2838,6 +2839,7 @@ check_func ${malloc_prefix}memalign && enable memalign
|
||||
check_func mkstemp
|
||||
check_func mmap
|
||||
check_func ${malloc_prefix}posix_memalign && enable posix_memalign
|
||||
check_func_headers malloc.h _aligned_malloc && enable aligned_malloc
|
||||
check_func setrlimit
|
||||
check_func strerror_r
|
||||
check_func strptime
|
||||
@ -3144,7 +3146,7 @@ check_deps $CONFIG_LIST \
|
||||
|
||||
enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; }
|
||||
|
||||
! enabled_any memalign posix_memalign &&
|
||||
! enabled_any memalign posix_memalign aligned_malloc &&
|
||||
enabled_any $need_memalign && enable memalign_hack
|
||||
|
||||
echo "install prefix $prefix"
|
||||
|
@ -84,6 +84,8 @@ void *av_malloc(size_t size)
|
||||
#elif HAVE_POSIX_MEMALIGN
|
||||
if (posix_memalign(&ptr,32,size))
|
||||
ptr = NULL;
|
||||
#elif HAVE_ALIGNED_MALLOC
|
||||
ptr = _aligned_malloc(size, 32);
|
||||
#elif HAVE_MEMALIGN
|
||||
ptr = memalign(32,size);
|
||||
/* Why 64?
|
||||
@ -131,6 +133,8 @@ void *av_realloc(void *ptr, size_t size)
|
||||
if(!ptr) return av_malloc(size);
|
||||
diff= ((char*)ptr)[-1];
|
||||
return (char*)realloc((char*)ptr - diff, size + diff) + diff;
|
||||
#elif HAVE_ALIGNED_MALLOC
|
||||
return _aligned_realloc(ptr, size, 32);
|
||||
#else
|
||||
return realloc(ptr, size);
|
||||
#endif
|
||||
@ -141,6 +145,8 @@ void av_free(void *ptr)
|
||||
#if CONFIG_MEMALIGN_HACK
|
||||
if (ptr)
|
||||
free((char*)ptr - ((char*)ptr)[-1]);
|
||||
#elif HAVE_ALIGNED_MALLOC
|
||||
_aligned_free(ptr);
|
||||
#else
|
||||
free(ptr);
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user