diff --git a/wolfssl/wolfcrypt/settings.h b/wolfssl/wolfcrypt/settings.h index 38f6ba290..3072906a8 100644 --- a/wolfssl/wolfcrypt/settings.h +++ b/wolfssl/wolfcrypt/settings.h @@ -2123,9 +2123,17 @@ extern void uITRON4_free(void *p) ; #include "RTOS.h" #if !defined(XMALLOC_USER) && !defined(NO_WOLFSSL_MEMORY) && \ !defined(WOLFSSL_STATIC_MEMORY) - #define XMALLOC(s, h, type) ((void)(h), (void)(type), OS_HEAP_malloc((s))) - #define XFREE(p, h, type) ((void)(h), (void)(type), OS_HEAP_free((p))) - #define XREALLOC(p, n, h, t) ((void)(h), (void)(t), OS_HEAP_realloc(((p), (n))) + /* Per the user manual of embOS https://www.segger.com/downloads/embos/UM01001 + * this API has changed with V5. */ + #if (OS_VERSION >= 50000U) + #define XMALLOC(s, h, type) ((void)(h), (void)(type), OS_HEAP_malloc((s))) + #define XFREE(p, h, type) ((void)(h), (void)(type), OS_HEAP_free((p))) + #define XREALLOC(p, n, h, t) ((void)(h), (void)(t), OS_HEAP_realloc((p), (n))) + #else + #define XMALLOC(s, h, type) ((void)(h), (void)(type), OS_malloc((s))) + #define XFREE(p, h, type) ((void)(h), (void)(type), OS_free((p))) + #define XREALLOC(p, n, h, t) ((void)(h), (void)(t), OS_realloc((p), (n))) + #endif #endif #endif diff --git a/wolfssl/wolfcrypt/types.h b/wolfssl/wolfcrypt/types.h index 692f11337..1abdfb9a3 100644 --- a/wolfssl/wolfcrypt/types.h +++ b/wolfssl/wolfcrypt/types.h @@ -558,6 +558,10 @@ typedef struct w64wrapper { #endif #define XREALLOC(p, n, h, t) wolfSSL_Realloc((p), (n), (h), (t)) #endif /* WOLFSSL_DEBUG_MEMORY */ + #elif defined(WOLFSSL_EMBOS) && !defined(XMALLOC_USER) \ + && !defined(NO_WOLFSSL_MEMORY) \ + && !defined(WOLFSSL_STATIC_MEMORY) + /* settings.h solve this case already. Avoid redefinition. */ #elif (!defined(FREERTOS) && !defined(FREERTOS_TCP)) || defined(WOLFSSL_TRACK_MEMORY) #ifdef WOLFSSL_DEBUG_MEMORY #define XMALLOC(s, h, t) ((void)(h), (void)(t), wolfSSL_Malloc((s), __func__, __LINE__))