From b11ee05df435331318faca3768717016a159d165 Mon Sep 17 00:00:00 2001 From: Abdelrahman Date: Sun, 14 Dec 2025 02:31:25 +0000 Subject: [PATCH] Fix C++ array_pop --- src/primitives/array/array.h | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/primitives/array/array.h b/src/primitives/array/array.h index eac8e38..52be0bd 100644 --- a/src/primitives/array/array.h +++ b/src/primitives/array/array.h @@ -50,11 +50,14 @@ BEGIN_C_LINKAGE \ return (TYPE *)(header + 1); \ }()) -#define wapp_array_pop(TYPE, ARRAY_PTR) \ - (ARRAY_PTR != NULL && _array_count((u8 *)ARRAY_PTR) > 0 ? \ - *((TYPE *)_array_pop((u8 *)ARRAY_PTR, sizeof(TYPE))) : \ - TYPE{} \ - ) +#define wapp_array_pop(TYPE, ARRAY_PTR) ([&]() { \ + if (ARRAY_PTR != NULL || _array_count((u8 *)ARRAY_PTR) == 0) { \ + TYPE result{}; \ + return result; \ + } \ + \ + return *((TYPE *)_array_pop((u8 *)ARRAY_PTR, sizeof(TYPE))); \ +}()) #else #define _stack_array(TYPE, SIZE) struct { ArrayHeader header; TYPE items[SIZE]; } #define wapp_array(TYPE, ...) \