From 443646b356da8ada10fa3e44e0e24f7491c8b983 Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Tue, 16 Sep 2025 12:28:33 -0700 Subject: [PATCH] rdi make: fix incorrect base encoding offset initialization when pushing into new location chunk --- src/lib_rdi_make/rdi_make.c | 5 +++-- src/rdi/rdi_local.c | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/lib_rdi_make/rdi_make.c b/src/lib_rdi_make/rdi_make.c index 0ccff4fb..6295b5fb 100644 --- a/src/lib_rdi_make/rdi_make.c +++ b/src/lib_rdi_make/rdi_make.c @@ -4,7 +4,7 @@ //////////////////////////////// //~ rjf: API Implementation Helper Macros -#define RDIM_IdxedChunkListPush(arena, list, chunk_type, element_type, cap_value, result) \ +#define RDIM_IdxedChunkListPush(arena, list, chunk_type, element_type, cap_value, result, ...) \ element_type *result = 0;\ do\ {\ @@ -14,6 +14,7 @@ if(n == 0 || n->count >= n->cap)\ n = rdim_push_array(arena, chunk_type, 1);\ n->cap = cap_value;\ n->base_idx = list->total_count;\ +__VA_ARGS__;\ n->v = rdim_push_array_no_zero(arena, element_type, n->cap);\ RDIM_SLLQueuePush(list->first, list->last, n);\ list->chunk_count += 1;\ @@ -1054,7 +1055,7 @@ rdim_encoded_size_from_location_info(RDIM_LocationInfo *info) RDI_PROC RDIM_Location * rdim_location_chunk_list_push_new(RDIM_Arena *arena, RDIM_LocationChunkList *list, RDI_U64 cap, RDIM_LocationInfo *info) { - RDIM_IdxedChunkListPush(arena, list, RDIM_LocationChunkNode, RDIM_Location, cap, result); + RDIM_IdxedChunkListPush(arena, list, RDIM_LocationChunkNode, RDIM_Location, cap, result, n->base_encoding_off = list->total_encoded_size); { RDI_U64 encoded_size = rdim_encoded_size_from_location_info(info); rdim_memcpy_struct(&result->info, info); diff --git a/src/rdi/rdi_local.c b/src/rdi/rdi_local.c index 874c35dd..f30651c1 100644 --- a/src/rdi/rdi_local.c +++ b/src/rdi/rdi_local.c @@ -167,7 +167,7 @@ rdi_string_from_eval_op(Arena *arena, RDI_EvalOp op) switch(op) { default:{result = push_str8f(arena, "%#x", op);}break; -#define X(name) case RDI_EvalOp_##name:{result = str8_lit("#name");}break; +#define X(name) case RDI_EvalOp_##name:{result = str8_lit(#name);}break; RDI_EvalOp_XList #undef X } @@ -181,7 +181,7 @@ rdi_string_from_eval_type_group(Arena *arena, RDI_EvalTypeGroup eval_type_group) switch(eval_type_group) { default:{result = push_str8f(arena, "%#x", eval_type_group);}break; -#define X(name) case RDI_EvalTypeGroup_##name:{result = str8_lit("#name");}break; +#define X(name) case RDI_EvalTypeGroup_##name:{result = str8_lit(#name);}break; RDI_EvalTypeGroup_XList #undef X }