diff options
| author | Matthieu Darbois <mayeut@users.noreply.github.com> | 2016-01-06 23:15:05 +0100 |
|---|---|---|
| committer | Matthieu Darbois <mayeut@users.noreply.github.com> | 2016-01-06 23:15:05 +0100 |
| commit | 0dd44e7dba540e69114a24c81e9190786ed32fed (patch) | |
| tree | 41b58d90a04704e29c8d8bf1764e6265f8f6cc27 /src/lib | |
| parent | a205f703283d42e1989da3670cb1c4bb5d8ae193 (diff) | |
| parent | 9cad6bc1f68be54189c6db8a7fcef6f994daf891 (diff) | |
Merge pull request #687 from stweil/memalign
Fix fatal crash on 64 bit Linux
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/openjp2/opj_malloc.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/lib/openjp2/opj_malloc.c b/src/lib/openjp2/opj_malloc.c index 3c8cedf7..e04db912 100644 --- a/src/lib/openjp2/opj_malloc.c +++ b/src/lib/openjp2/opj_malloc.c @@ -1,6 +1,6 @@ /* - * The copyright in this software is being made available under the 2-clauses - * BSD License, included below. This software may be subject to other third + * The copyright in this software is being made available under the 2-clauses + * BSD License, included below. This software may be subject to other third * party and contributor rights, including patent rights, and no such rights * are granted under this license. * @@ -32,6 +32,10 @@ #define OPJ_SKIP_POISON #include "opj_includes.h" +#if defined(OPJ_HAVE_MALLOC_H) && defined(OPJ_HAVE_MEMALIGN) +# include <malloc.h> +#endif + #ifndef SIZE_MAX # define SIZE_MAX ((size_t) -1) #endif @@ -68,7 +72,7 @@ static INLINE void *opj_aligned_alloc_n(size_t alignment, size_t size) /* * Generic aligned malloc implementation. * Uses size_t offset for the integer manipulation of the pointer, - * as uintptr_t is not available in C89 to do + * as uintptr_t is not available in C89 to do * bitwise operations on the pointer itself. */ alignment--; @@ -78,7 +82,7 @@ static INLINE void *opj_aligned_alloc_n(size_t alignment, size_t size) /* Room for padding and extra pointer stored in front of allocated area */ size_t overhead = alignment + sizeof(void *); - + /* let's be extra careful */ assert(alignment <= (SIZE_MAX - sizeof(void *))); @@ -151,7 +155,7 @@ static INLINE void *opj_aligned_realloc_n(void *ptr, size_t alignment, size_t ne if (new_size > SIZE_MAX - overhead) { return NULL; } - + oldmem = ((void**) ptr)[-1]; newmem = (OPJ_UINT8*)realloc(oldmem, new_size + overhead); if (newmem == NULL) { |
