diff options
| author | Francois-Olivier Devaux <fodevaux@users.noreply.github.com> | 2007-08-24 13:46:44 +0000 |
|---|---|---|
| committer | Francois-Olivier Devaux <fodevaux@users.noreply.github.com> | 2007-08-24 13:46:44 +0000 |
| commit | bd0b6ec2fdf6e27be9ecf811eede2a49241fa081 (patch) | |
| tree | ebb836d78496a23dd10e59af6cff18e3c075d052 /libopenjpeg | |
| parent | 1d02a8b59505e2faace66ad5cbb607e994cc46eb (diff) | |
Fixed problem with _mm_malloc under OSX. Thanks to Callum Lerwick for solving that issue.
Diffstat (limited to 'libopenjpeg')
| -rw-r--r-- | libopenjpeg/j2k_lib.h | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/libopenjpeg/j2k_lib.h b/libopenjpeg/j2k_lib.h index d13ac5fe..a8fc8f20 100644 --- a/libopenjpeg/j2k_lib.h +++ b/libopenjpeg/j2k_lib.h @@ -32,7 +32,7 @@ The functions in J2K_LIB.C are internal utilities mainly used for memory management. */ -#ifndef __GCC__ +#ifndef __GNUC__ #define __attribute__(x) /* */ #endif @@ -62,13 +62,35 @@ Allocate memory aligned to a 16 byte boundry @return Returns a void pointer to the allocated space, or NULL if there is insufficient memory available */ #ifdef WIN32 -#include <xmmintrin.h> -#else + +#ifdef __GNUC__ #include <mm_malloc.h> +#else /* MSVC, Intel C++ */ +#include <malloc.h> #endif -#define opj_aligned_malloc(size) _mm_malloc(size, 16) + +#define opj_aligned_malloc(size) _mm_malloc(size, 16) #define opj_aligned_free(m) _mm_free(m) +#else /* Not WIN32 */ + +/* Linux x86_64 and OSX always align allocations to 16 bytes */ +#if defined(__amd64__) || defined(__APPLE__) +#define opj_aligned_malloc(size) malloc(size) +#else +extern int posix_memalign (void **, size_t, size_t); + +static INLINE void* __attribute__ ((malloc)) opj_aligned_malloc(size_t size){ + void* mem = NULL; + posix_memalign(&mem, 16, size); + return mem; +} +#endif + +#define opj_aligned_free(m) free(m) + +#endif + /** Reallocate memory blocks. @param memblock Pointer to previously allocated memory block |
