From 8f7ca178c228deefd1b25c44614797ac225a6c1b Mon Sep 17 00:00:00 2001 From: Nikita Smith Date: Wed, 26 Mar 2025 12:21:55 -0700 Subject: [PATCH] bugfix incomplete type resolution hash table lookup --- src/rdi_make/rdi_make_local.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/rdi_make/rdi_make_local.c b/src/rdi_make/rdi_make_local.c index 79aedf13..df463138 100644 --- a/src/rdi_make/rdi_make_local.c +++ b/src/rdi_make/rdi_make_local.c @@ -437,8 +437,10 @@ rdim_local_resolve_incomplete_types(RDIM_TypeChunkList *types) Temp scratch = scratch_begin(0,0); + U64 total_type_count = types->total_count + 1; + ProfBegin("Build Hash Table"); - RDIM_Type **name_ht = rdim_push_array(scratch.arena, RDIM_Type *, types->total_count + 1); + RDIM_Type **name_ht = rdim_push_array(scratch.arena, RDIM_Type *, total_type_count); for(RDIM_TypeChunkNode *chunk = types->first; chunk != 0; chunk = chunk->next) { for(RDI_U64 i = 0; i < chunk->count; i += 1) @@ -474,7 +476,7 @@ rdim_local_resolve_incomplete_types(RDIM_TypeChunkList *types) } } - slot = (slot + 1) % types->total_count; + slot = (slot + 1) % total_type_count; } while (slot != best_slot); if(name_ht[slot] == 0) @@ -487,7 +489,7 @@ rdim_local_resolve_incomplete_types(RDIM_TypeChunkList *types) ProfEnd(); ProfBegin("Make Fwd Map"); - RDIM_Type **fwd_map = rdim_push_array(scratch.arena, RDIM_Type *, types->total_count + 1); + RDIM_Type **fwd_map = rdim_push_array(scratch.arena, RDIM_Type *, total_type_count); for(RDIM_TypeChunkNode *chunk = types->first; chunk != 0; chunk = chunk->next) { for(RDI_U64 i = 0; i < chunk->count; i += 1) @@ -525,6 +527,8 @@ rdim_local_resolve_incomplete_types(RDIM_TypeChunkList *types) break; } } + + slot = (slot + 1) % total_type_count; } while(slot != best_slot); if(match)