From 732556700dab1c1f8fcac37d9108d62a2e87c29a Mon Sep 17 00:00:00 2001 From: Matthijs Zeeman Date: Thu, 21 Jun 2018 11:33:13 +0200 Subject: [PATCH] Fix alignment error of CMock_Guts_Buffer Changed allocation to use CMOCK_MEM_INDEX_TYPE instead of unsigned char. This may allocate extra memory if CMOCK_MEM_SIZE is not a multiple of CMOCK_MEM_INDEX_SIZE. Had to substitute CMock_Guts_Buffer with a define in this case because pointers are not constants. --- src/cmock.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/cmock.c b/src/cmock.c index 3feba75..318f4c7 100644 --- a/src/cmock.c +++ b/src/cmock.c @@ -26,7 +26,8 @@ static unsigned char* CMock_Guts_Buffer = NULL; static CMOCK_MEM_INDEX_TYPE CMock_Guts_BufferSize = CMOCK_MEM_ALIGN_SIZE; static CMOCK_MEM_INDEX_TYPE CMock_Guts_FreePtr; #else -static unsigned char CMock_Guts_Buffer[CMOCK_MEM_SIZE + CMOCK_MEM_ALIGN_SIZE]; +static CMOCK_MEM_INDEX_TYPE CMock_Guts_BufferArray[(CMOCK_MEM_SIZE + CMOCK_MEM_INDEX_SIZE - 1) / CMOCK_MEM_INDEX_SIZE]; +#define CMock_Guts_Buffer ((unsigned char*)CMock_Guts_BufferArray) static CMOCK_MEM_INDEX_TYPE CMock_Guts_BufferSize = CMOCK_MEM_SIZE + CMOCK_MEM_ALIGN_SIZE; static CMOCK_MEM_INDEX_TYPE CMock_Guts_FreePtr; #endif