Merge branch 'bugfix/heap_caps_alloc_32bit' into 'master'

heap: heap_caps_malloc(..., MALLOC_CAP_32_BIT) should always allocate a 32-bit aligned size

See merge request idf/esp-idf!2889
pull/2237/merge
Ivan Grokhotkov 2018-08-01 17:39:14 +08:00
commit 20147f951c
1 zmienionych plików z 8 dodań i 1 usunięć

Wyświetl plik

@ -75,9 +75,16 @@ IRAM_ATTR void *heap_caps_malloc( size_t size, uint32_t caps )
if ((caps & MALLOC_CAP_8BIT) || (caps & MALLOC_CAP_DMA)) {
return NULL;
}
//If any, EXEC memory should be 32-bit aligned, so round up to the next multiple of 4.
caps |= MALLOC_CAP_32BIT; // IRAM is 32-bit accessible RAM
}
if (caps & MALLOC_CAP_32BIT) {
/* 32-bit accessible RAM should allocated in 4 byte aligned sizes
* (Future versions of ESP-IDF should possibly fail if an invalid size is requested)
*/
size = (size + 3) & (~3);
}
for (int prio = 0; prio < SOC_MEMORY_TYPE_NO_PRIOS; prio++) {
//Iterate over heaps and check capabilities at this priority
heap_t *heap;