From 20d3fa4ddb6337847a7dd79c56cbc94104cde0bc Mon Sep 17 00:00:00 2001 From: Nikita Smith Date: Fri, 20 Feb 2026 22:08:26 -0800 Subject: [PATCH] normalize paths with inconsistent slashes --- src/dbg_engine/dbg_engine_core.c | 4 ++-- src/lib_rdi_make/rdi_make.c | 14 ++++++++++++++ src/lib_rdi_make/rdi_make.h | 1 + src/raddbg/raddbg_views.c | 2 +- src/rdi_make/rdi_make_local.c | 6 +++--- 5 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/dbg_engine/dbg_engine_core.c b/src/dbg_engine/dbg_engine_core.c index 67ff4c22..b7a81a13 100644 --- a/src/dbg_engine/dbg_engine_core.c +++ b/src/dbg_engine/dbg_engine_core.c @@ -771,7 +771,7 @@ d_lines_array_from_dbgi_key_file_path_line_range(Arena *arena, DI_Key dbgi_key, override_n = override_n->next) { String8 file_path = override_n->string; - String8 file_path_normalized = lower_from_str8(scratch.arena, path_normalized_from_string(scratch.arena, file_path)); + String8 file_path_normalized = rdim_normalize_path_str8(scratch.arena, file_path); // rjf: binary -> rdi RDI_Parsed *rdi = di_rdi_from_key(access, dbgi_key, 0, 0); @@ -864,7 +864,7 @@ d_lines_array_from_file_path_line_range(Arena *arena, String8 file_path, Rng1S64 override_n = override_n->next) { String8 file_path = override_n->string; - String8 file_path_normalized = lower_from_str8(scratch.arena, file_path); + String8 file_path_normalized = rdim_normalize_path_str8(scratch.arena, file_path); for EachIndex(idx, dbgi_keys.count) { Access *access = access_open(); diff --git a/src/lib_rdi_make/rdi_make.c b/src/lib_rdi_make/rdi_make.c index 053392ce..23cd540b 100644 --- a/src/lib_rdi_make/rdi_make.c +++ b/src/lib_rdi_make/rdi_make.c @@ -255,6 +255,20 @@ rdim_lower_from_str8(RDIM_Arena *arena, RDIM_String8 string) return result; } +RDI_PROC RDIM_String8 +rdim_normalize_path_str8(RDIM_Arena *arena, RDIM_String8 path) +{ + RDIM_String8 result = rdim_lower_from_str8(arena, path); + for(RDI_U64 i = 0; i < result.RDIM_String8_SizeMember; i += 1) + { + if(result.RDIM_String8_BaseMember[i] == '\\') + { + result.RDIM_String8_BaseMember[i] = '/'; + } + } + return result; +} + //- rjf: string lists RDI_PROC void diff --git a/src/lib_rdi_make/rdi_make.h b/src/lib_rdi_make/rdi_make.h index fcc3f9fd..814ed301 100644 --- a/src/lib_rdi_make/rdi_make.h +++ b/src/lib_rdi_make/rdi_make.h @@ -1570,6 +1570,7 @@ RDI_PROC RDI_S32 rdim_str8_match(RDIM_String8 a, RDIM_String8 b, RDIM_StringMatc #define rdim_str8_struct(S) rdim_str8((RDI_U8*)(S), sizeof(*(S))) #define rdim_str8_struct_array(S, C) rdim_str8((RDI_U8*)(S), sizeof(*(S)) * (C)) RDI_PROC RDIM_String8 rdim_lower_from_str8(RDIM_Arena *arena, RDIM_String8 string); +RDI_PROC RDIM_String8 rdim_normalize_path_str8(RDIM_Arena *arena, RDIM_String8 path); //- rjf: string lists RDI_PROC void rdim_str8_list_push(RDIM_Arena *arena, RDIM_String8List *list, RDIM_String8 string); diff --git a/src/raddbg/raddbg_views.c b/src/raddbg/raddbg_views.c index eca984d4..6b8de17a 100644 --- a/src/raddbg/raddbg_views.c +++ b/src/raddbg/raddbg_views.c @@ -2248,7 +2248,7 @@ RD_VIEW_UI_FUNCTION_DEF(text) for EachNode(override_n, String8Node, overrides.first) { String8 file_path = override_n->string; - String8 file_path_normalized = lower_from_str8(scratch.arena, path_normalized_from_string(scratch.arena, file_path)); + String8 file_path_normalized = rdim_normalize_path_str8(scratch.arena, file_path); B32 good_src_id = 0; U32 src_id = 0; if(rdi != &rdi_parsed_nil) diff --git a/src/rdi_make/rdi_make_local.c b/src/rdi_make/rdi_make_local.c index 3d3e27b1..4f5b1bd6 100644 --- a/src/rdi_make/rdi_make_local.c +++ b/src/rdi_make/rdi_make_local.c @@ -855,7 +855,7 @@ rdim_bake(Arena *arena, RDIM_BakeParams *params) Rng1U64 range = lane_range(n->count); for EachInRange(n_idx, range) { - RDIM_String8 normalized_path = rdim_lower_from_str8(arena, n->v[n_idx].path); + RDIM_String8 normalized_path = rdim_normalize_path_str8(arena, n->v[n_idx].path); rdim_bake_string_map_loose_insert(arena, top, lane_map, 1, normalized_path); } } @@ -1141,7 +1141,7 @@ rdim_bake(Arena *arena, RDIM_BakeParams *params) for EachInRange(n_idx, n_range) { RDIM_SrcFile *src_file = &n->v[n_idx]; - RDIM_String8 normalized_path = rdim_lower_from_str8(arena, src_file->path); + RDIM_String8 normalized_path = rdim_normalize_path_str8(arena, src_file->path); rdim_bake_name_map_insert(scratch.arena, top, map, 4, normalized_path, rdim_idx_from_src_file(src_file)); } } @@ -1990,7 +1990,7 @@ rdim_bake(Arena *arena, RDIM_BakeParams *params) //- rjf: fill file info Temp scratch = scratch_begin(&arena, 1); - String8 normalized_path = rdim_lower_from_str8(scratch.arena, src->path); + String8 normalized_path = rdim_normalize_path_str8(scratch.arena, src->path); B32 has_checksum = (RDI_ChecksumKind_NULL < src->checksum_kind && src->checksum_kind < RDI_ChecksumKind_COUNT && src->checksum.size != 0); dst->file_path_node_idx = rdim_bake_path_node_idx_from_string(path_tree, src->path); dst->normal_full_path_string_idx = rdim_bake_idx_from_string(bake_strings, normalized_path);