From 05862b802237df8bc61b0b45ef1ba4e70b0773f5 Mon Sep 17 00:00:00 2001 From: pommicket Date: Mon, 5 Dec 2022 19:05:14 -0500 Subject: full json parser --- arr.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'arr.c') diff --git a/arr.c b/arr.c index ae25a3c..05117b1 100644 --- a/arr.c +++ b/arr.c @@ -60,6 +60,10 @@ static inline u32 arr_len(void *arr) { return arr ? arr_hdr_(arr)->len : 0; } +static inline u32 arr_cap(void *arr) { + return arr ? arr_hdr_(arr)->cap : 0; +} + static inline unsigned arr_lenu(void *arr) { return (unsigned)arr_len(arr); } @@ -114,6 +118,7 @@ static void arr_reserve_(void **arr, size_t member_size, size_t n) { if (!*arr) { // create a new array with capacity n+1 + // why n+1? i dont know i wrote this a while ago ArrHeader *hdr = calloc(1, sizeof(ArrHeader) + (n+1) * member_size); if (hdr) { hdr->cap = (u32)n+1; @@ -151,7 +156,7 @@ static void arr_set_len_(void **arr, size_t member_size, size_t n) { ArrHeader *hdr = arr_hdr_(*arr); if (n > hdr->len) { // zero new elements - memset((char *)hdr->data + hdr->len, 0, (n - hdr->len) * member_size); + memset((char *)hdr->data + hdr->len * member_size, 0, (n - hdr->len) * member_size); } hdr->len = (u32)n; } -- cgit v1.2.3