diff --git a/project.4coder b/project.4coder index 2122c0fb..3db6f2ed 100644 --- a/project.4coder +++ b/project.4coder @@ -81,6 +81,15 @@ commands = .save_dirty_files = true, .cursor_at_end = false, }, + .build_raddbg_dump = + { + .win = "build raddbg_dump", + .linux = "", + .out = "*compilation*", + .footer_panel = true, + .save_dirty_files = true, + .cursor_at_end = false, + }, .build_mule_main = { .win = "build mule_main", diff --git a/src/raddbg_convert/pdb/raddbg_pdb.c b/src/raddbg_convert/pdb/raddbg_pdb.c index 499f62bd..3d88c1e4 100644 --- a/src/raddbg_convert/pdb/raddbg_pdb.c +++ b/src/raddbg_convert/pdb/raddbg_pdb.c @@ -335,7 +335,11 @@ pdb_tpi_hash_from_data(Arena *arena, PDB_Strtbl *strtbl, PDB_TpiParsed *tpi, Str block = push_array(arena, PDB_TpiHashBlock, 1); SLLStackPush(buckets[bucket_idx], block); } - block->itypes[block->local_count] = itype; + if(block->local_count != 0) + { + MemoryCopy(block->itypes+1, block->itypes, sizeof(CV_TypeId)*block->local_count); + } + block->itypes[0] = itype; block->local_count += 1; } @@ -397,11 +401,14 @@ pdb_tpi_hash_from_data(Arena *arena, PDB_Strtbl *strtbl, PDB_TpiParsed *tpi, Str local_idx < block->local_count && local_idx < ArrayCount(block->itypes); local_idx += 1) { - if(block->itypes[local_idx] == type_id && prev_block != 0) + if(block->itypes[local_idx] == type_id) { - prev_block->next = block->next; - block->next = buckets[bucket_idx]; - buckets[bucket_idx] = block; + if(prev_block != 0) + { + prev_block->next = block->next; + block->next = buckets[bucket_idx]; + buckets[bucket_idx] = block; + } if(local_idx != 0) { Swap(CV_TypeId, block->itypes[0], block->itypes[local_idx]);