aboutsummaryrefslogtreecommitdiff
path: root/src/stdlib/lists.h
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2025-12-21 14:30:11 -0500
committerBruce Hill <bruce@bruce-hill.com>2025-12-21 14:30:11 -0500
commit86a08a38a8a60b6a0de0da62a5d3fa843f6db71f (patch)
tree2e7649bb00f6ceed8f6c087de573c873cf753789 /src/stdlib/lists.h
parent1836d095f88ff83d9499c1e979362352a1fa400b (diff)
Fix empty allocation
Diffstat (limited to 'src/stdlib/lists.h')
-rw-r--r--src/stdlib/lists.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/stdlib/lists.h b/src/stdlib/lists.h
index 457fed52..6a0a1d43 100644
--- a/src/stdlib/lists.h
+++ b/src/stdlib/lists.h
@@ -61,7 +61,8 @@ extern char _EMPTY_LIST_SENTINEL;
t items[] = {__VA_ARGS__}; \
(List_t){.length = sizeof(items) / sizeof(items[0]), \
.stride = (int64_t)&items[1] - (int64_t)&items[0], \
- .data = memcpy(GC_MALLOC(sizeof(items)), items, sizeof(items)), \
+ .data = sizeof(items) == 0 ? &_EMPTY_LIST_SENTINEL \
+ : memcpy(GC_MALLOC(sizeof(items)), items, sizeof(items)), \
.atomic = 0, \
.data_refcount = 0}; \
})
@@ -70,7 +71,7 @@ extern char _EMPTY_LIST_SENTINEL;
t items[N] = {__VA_ARGS__}; \
(List_t){.length = N, \
.stride = (int64_t)&items[1] - (int64_t)&items[0], \
- .data = memcpy(GC_MALLOC(sizeof(items)), items, sizeof(items)), \
+ .data = N == 0 ? &_EMPTY_LIST_SENTINEL : memcpy(GC_MALLOC(sizeof(items)), items, sizeof(items)), \
.atomic = 0, \
.data_refcount = 0}; \
})