From: Urvang Joshi Date: Tue, 26 Jul 2016 19:02:37 +0000 (-0700) Subject: aom_realloc correction. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=497f27ed9df2e53e81ffc631c0c66055e319e523;p=libvpx aom_realloc correction. aom_realloc was allocating 1 byte more than needed every time. Fixed this, and took this opportunity to do a small refactoring. Change-Id: I38fcb62b698894acbbab43466c1decd12f906789 --- diff --git a/aom_mem/aom_mem.c b/aom_mem/aom_mem.c index 35b286b47..38350c69e 100644 --- a/aom_mem/aom_mem.c +++ b/aom_mem/aom_mem.c @@ -18,6 +18,10 @@ #include "include/aom_mem_intrnl.h" #include "aom/aom_integer.h" +static inline size_t GetAlignedMallocSize(size_t size, size_t align) { + return size + align - 1 + ADDRESS_STORAGE_SIZE; +} + static inline size_t *GetMallocAddressLocation(void *const mem) { return ((size_t *)mem) - 1; } @@ -35,7 +39,8 @@ static inline void *GetActualMallocAddress(void *const mem) { void *aom_memalign(size_t align, size_t size) { void *x = NULL; - void *const addr = malloc(size + align - 1 + ADDRESS_STORAGE_SIZE); + const size_t aligned_size = GetAlignedMallocSize(size, align); + void *const addr = malloc(aligned_size); if (addr) { x = align_addr((unsigned char *)addr + ADDRESS_STORAGE_SIZE, (int)align); SetActualMallocAddress(x, addr); @@ -69,8 +74,9 @@ void *aom_realloc(void *memblk, size_t size) { aom_free(memblk); else { void *addr = GetActualMallocAddress(memblk); + const size_t aligned_size = GetAlignedMallocSize(size, DEFAULT_ALIGNMENT); memblk = NULL; - addr = realloc(addr, size + DEFAULT_ALIGNMENT + ADDRESS_STORAGE_SIZE); + addr = realloc(addr, aligned_size); if (addr) { new_addr = align_addr((unsigned char *)addr + ADDRESS_STORAGE_SIZE, DEFAULT_ALIGNMENT);