ソースを参照

heap/tests: make IRAM allocation size divisible by 4

heap_caps_malloc will fail to poison a block in IRAM with size not
divisible by 4. The proper fix will be to make poisoning code
smarter, or to disallow allocations from IRAM with size not aligned
by 4.
Ivan Grokhotkov 7 年 前
コミット
9a2583122c
1 ファイル変更1 行追加1 行削除
  1. 1 1
      components/heap/test/test_malloc_caps.c

+ 1 - 1
components/heap/test/test_malloc_caps.c

@@ -43,7 +43,7 @@ TEST_CASE("Capabilities allocator test", "[heap]")
     //the following gives size of IRAM-only (not D/IRAM) memory.
     size_t free_iram = heap_caps_get_free_size(MALLOC_CAP_INTERNAL) -
                            heap_caps_get_free_size(MALLOC_CAP_8BIT | MALLOC_CAP_INTERNAL);
-    size_t alloc32 = MIN(free_iram / 2, 10*1024);
+    size_t alloc32 = MIN(free_iram / 2, 10*1024) & (~3);
     printf("Freeing; allocating %u bytes of 32K-capable RAM\n", alloc32);
     m1 = heap_caps_malloc(alloc32, MALLOC_CAP_32BIT);
     printf("--> %p\n", m1);