summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFengwei Yin <yfw.glibc@gmail.com>2014-03-07 09:05:08 +0800
committerErik de Castro Lopo <erikd@mega-nerd.com>2014-03-14 15:32:50 +1100
commit7cbecbae9f70be770f7651d09531fec0de6f9cf5 (patch)
tree202298fad24579eb6f0337106911c52ef74c2f2c /src
parent163b7340103f8eef1e4f6e0b4770c028ce71bf7c (diff)
downloadflac-7cbecbae9f70be770f7651d09531fec0de6f9cf5.tar.gz
Using uintptr_t to simplify pointer handling a little bit
Signed-off-by: Erik de Castro Lopo <erikd@mega-nerd.com>
Diffstat (limited to 'src')
-rw-r--r--src/libFLAC/memory.c23
1 files changed, 4 insertions, 19 deletions
diff --git a/src/libFLAC/memory.c b/src/libFLAC/memory.c
index a413b8c7..8aecf5f7 100644
--- a/src/libFLAC/memory.c
+++ b/src/libFLAC/memory.c
@@ -34,6 +34,8 @@
# include <config.h>
#endif
+#include <stdint.h>
+
#include "private/memory.h"
#include "FLAC/assert.h"
#include "share/alloc.h"
@@ -46,25 +48,8 @@ void *FLAC__memory_alloc_aligned(size_t bytes, void **aligned_address)
#ifdef FLAC__ALIGN_MALLOC_DATA
/* align on 32-byte (256-bit) boundary */
- x = safe_malloc_add_2op_(bytes, /*+*/31);
-#ifdef SIZEOF_VOIDP
-#if SIZEOF_VOIDP == 4
- /* could do *aligned_address = x + ((unsigned) (32 - (((unsigned)x) & 31))) & 31; */
- *aligned_address = (void*)(((unsigned)x + 31) & -32);
-#elif SIZEOF_VOIDP == 8
- *aligned_address = (void*)(((FLAC__uint64)x + 31) & (FLAC__uint64)(-((FLAC__int64)32)));
-#else
-# error Unsupported sizeof(void*)
-#endif
-#else
- /* there's got to be a better way to do this right for all archs */
- if(sizeof(void*) == sizeof(unsigned))
- *aligned_address = (void*)(((unsigned)x + 31) & -32);
- else if(sizeof(void*) == sizeof(FLAC__uint64))
- *aligned_address = (void*)(((FLAC__uint64)x + 31) & (FLAC__uint64)(-((FLAC__int64)32)));
- else
- return 0;
-#endif
+ x = safe_malloc_add_2op_(bytes, /*+*/31L);
+ *aligned_address = (void*)(((uintptr_t)x + 31L) & -32L);
#else
x = safe_malloc_(bytes);
*aligned_address = x;