@@ -708,10 +708,11 @@ enum {
708708 idx##VAR_NAME = 0 ; \
709709 }
710710
711- #if defined(WOLFSSL_ASYNC_CRYPT) || defined( WOLFSSL_SMALL_STACK)
711+ #if defined(WOLFSSL_SMALL_STACK)
712712 #define WC_DECLARE_VAR_IS_HEAP_ALLOC
713713 #define WC_DECLARE_VAR (VAR_NAME, VAR_TYPE, VAR_SIZE, HEAP ) \
714714 VAR_TYPE* VAR_NAME = NULL
715+ #define WC_VAR_OK (VAR_NAME ) ((VAR_NAME) != NULL )
715716 #define WC_ALLOC_VAR (VAR_NAME, VAR_TYPE, VAR_SIZE, HEAP ) \
716717 do { \
717718 (VAR_NAME) = (VAR_TYPE*)XMALLOC (sizeof (VAR_TYPE) * (VAR_SIZE), \
@@ -720,13 +721,23 @@ enum {
720721 WC_ALLOC_DO_ON_FAILURE (); \
721722 } \
722723 } while (0 )
724+ #define WC_ALLOC_VAR_EX (VAR_NAME, VAR_TYPE, VAR_SIZE, HEAP, TY, ONFAIL )\
725+ do { \
726+ (VAR_NAME) = (VAR_TYPE*)XMALLOC (sizeof (VAR_TYPE) * (VAR_SIZE), \
727+ (HEAP), TY); \
728+ if ((VAR_NAME) == NULL ) { \
729+ ONFAIL; \
730+ } \
731+ } while (0 )
723732 #define WC_CALLOC_VAR (VAR_NAME, VAR_TYPE, VAR_SIZE, HEAP ) \
724733 do { \
725734 WC_ALLOC_VAR (VAR_NAME, VAR_TYPE, VAR_SIZE, HEAP); \
726735 XMEMSET (VAR_NAME, 0 , sizeof (VAR_TYPE) * (VAR_SIZE)); \
727736 } while (0 )
728737 #define WC_FREE_VAR (VAR_NAME, HEAP ) \
729738 XFREE (VAR_NAME, (HEAP), DYNAMIC_TYPE_WOLF_BIGINT)
739+ #define WC_FREE_VAR_EX (VAR_NAME, HEAP, TYPE) \
740+ XFREE(VAR_NAME, (HEAP), TYPE)
730741 #define WC_DECLARE_ARRAY (VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) \
731742 WC_DECLARE_HEAP_ARRAY(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP)
732743 #define WC_ARRAY_ARG (VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE) \
@@ -743,10 +754,14 @@ enum {
743754 #define WC_DECLARE_VAR (VAR_NAME, VAR_TYPE, VAR_SIZE, HEAP ) \
744755 VAR_TYPE VAR_NAME[VAR_SIZE]
745756 #define WC_ALLOC_VAR (VAR_NAME, VAR_TYPE, VAR_SIZE, HEAP ) WC_DO_NOTHING
757+ #define WC_ALLOC_VAR_EX (VAR_NAME, VAR_TYPE, VAR_SIZE, HEAP, TYPE, ONFAIL )\
758+ WC_DO_NOTHING
759+ #define WC_VAR_OK (VAR_NAME ) 1
746760 #define WC_CALLOC_VAR (VAR_NAME, VAR_TYPE, VAR_SIZE, HEAP ) \
747761 XMEMSET (VAR_NAME, 0 , sizeof (var))
748762 #define WC_FREE_VAR (VAR_NAME, HEAP) WC_DO_NOTHING \
749763 /* nothing to free, its stack */
764+ #define WC_FREE_VAR_EX (VAR_NAME, HEAP, TYPE) WC_DO_NOTHING
750765 #define WC_DECLARE_ARRAY (VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) \
751766 VAR_TYPE VAR_NAME[VAR_ITEMS][(VAR_SIZE) / sizeof(VAR_TYPE)] /* NOLINT(bugprone-sizeof-expression) */
752767 #define WC_ARRAY_ARG (VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE) \
0 commit comments