From b15949c2e69e3c6390358a84420ab244786cd581 Mon Sep 17 00:00:00 2001 From: Arne Kreddig Date: Tue, 4 Aug 2026 09:26:30 +0200 Subject: [PATCH] Fix: hal_iface_init() is not using malloc() anymore when ATCA_NO_HEAP and ATCA_HAL_CUSTOM are set --- lib/hal/atca_hal.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lib/hal/atca_hal.c b/lib/hal/atca_hal.c index 0419c2a4..77b5fca1 100644 --- a/lib/hal/atca_hal.c +++ b/lib/hal/atca_hal.c @@ -153,6 +153,11 @@ typedef struct } atca_hal_list_entry_t; +#if defined(ATCA_NO_HEAP) && defined(ATCA_HAL_CUSTOM) + static ATCAHAL_t g_atcahal_custom_iface; +#endif + + static atca_hal_list_entry_t atca_registered_hal_list[ATCA_MAX_HAL_CACHE] = { #ifdef ATCA_HAL_I2C { (uint8_t)ATCA_I2C_IFACE, &hal_i2c, NULL }, @@ -305,7 +310,12 @@ ATCA_STATUS hal_iface_init(ATCAIfaceCfg *cfg, ATCAHAL_t **hal, ATCAHAL_t **phy) #ifdef ATCA_HAL_CUSTOM if (ATCA_CUSTOM_IFACE == cfg->iface_type) { +#ifdef ATCA_NO_HEAP + (void)memset(&g_atcahal_custom_iface, 0, sizeof(g_atcahal_custom_iface)); + *hal = &g_atcahal_custom_iface; +#else *hal = hal_malloc(sizeof(ATCAHAL_t)); +#endif if (NULL != *hal) { (*hal)->halinit = ATCA_IFACECFG_VALUE(cfg, atcacustom.halinit);