From c1396b48d166c96ab10e744c1cf8467eb56b7d54 Mon Sep 17 00:00:00 2001
From: Fengwei Yin <yfw.glibc@gmail.com>
Date: Fri, 7 Mar 2014 09:05:08 +0800
Subject: [PATCH] Using uintptr_t to simplify pointer handling a little bit

---
 src/libFLAC/memory.c | 23 ++++-------------------
 1 file changed, 4 insertions(+), 19 deletions(-)

diff --git a/src/libFLAC/memory.c b/src/libFLAC/memory.c
index a413b8c..8aecf5f 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;
-- 
1.8.3.2

