heap: properly check the alignment in memory of a heap_buf_t pointer.
authorarighi <arighi@38d2e660-2303-0410-9eaa-f027e97ec537>
Wed, 17 Mar 2010 11:53:12 +0000 (11:53 +0000)
committerarighi <arighi@38d2e660-2303-0410-9eaa-f027e97ec537>
Wed, 17 Mar 2010 11:53:12 +0000 (11:53 +0000)
git-svn-id: https://src.develer.com/svnoss/bertos/trunk@3225 38d2e660-2303-0410-9eaa-f027e97ec537

bertos/struct/heap.c
bertos/struct/heap.h

index 27f8032567ae8945d70e6482a31a2c0afd90db85..33c6de2acadca599ee7057a4dc6710df16a4fba8 100644 (file)
@@ -56,7 +56,7 @@ void heap_init(struct Heap* h, void* memory, size_t size)
        memset(memory, FREE_FILL_CODE, size);
        #endif
 
-       ASSERT2((((uintptr_t)memory % sizeof(heap_buf_t)) == 0),
+       ASSERT2(((size_t)memory % alignof(heap_buf_t)) == 0,
        "memory buffer is unaligned, please use the HEAP_DEFINE_BUF() macro to declare heap buffers!\n");
 
        /* Initialize heap with a single big chunk */
index d76678b2090757a4a2c05e05a2394121644254bf..bcc54d529d10c47cee49f78cd8a70d9a3a5faf82 100644 (file)
@@ -71,8 +71,7 @@ typedef struct Heap
  * \param size Heap size in bytes.
  */
 #define HEAP_DEFINE_BUF(name, size) \
-       heap_buf_t name[((size) + sizeof(heap_buf_t) - 1) / sizeof(heap_buf_t)]; \
-       STATIC_ASSERT(sizeof(name) % sizeof(heap_buf_t) == 0)
+       heap_buf_t name[((size) + sizeof(heap_buf_t) - 1) / sizeof(heap_buf_t)]
 
 /// Initialize \a heap within the buffer pointed by \a memory which is of \a size bytes
 void heap_init(struct Heap* heap, void* memory, size_t size);