guard against relative path nodes

This commit is contained in:
Nikita Smith
2026-06-02 12:10:17 -07:00
committed by Ryan Fleury
parent e17bcd3058
commit bcf248682c
3 changed files with 6 additions and 5 deletions
+2 -2
View File
@@ -1243,7 +1243,7 @@ rb_thread_entry_point(void *p)
} }
PathStyle path_style = PathStyle_SystemAbsolute; PathStyle path_style = PathStyle_SystemAbsolute;
if (str8_match_wildcard(top_part, str8_lit("?:"), 0)) { path_style = PathStyle_WindowsAbsolute; } if (str8_match_wildcard(top_part, str8_lit("?:"), 0)) { path_style = PathStyle_WindowsAbsolute; }
else if(str8_match(top_part, str8_lit("/"), 0)) { path_style = PathStyle_UnixAbsolute; } else if(str8_match_wildcard(top_part, str8_lit("/*"), 0)) { path_style = PathStyle_UnixAbsolute; }
String8 path = str8_from_rdi_path_node_idx(scratch.arena, rdi, path_style, src_file->file_path_node_idx); String8 path = str8_from_rdi_path_node_idx(scratch.arena, rdi, path_style, src_file->file_path_node_idx);
str8_list_pushf(arena, &output_blobs, "[inlined] %S %S:%u\n", inline_name, path, inline_line.line_num); str8_list_pushf(arena, &output_blobs, "[inlined] %S %S:%u\n", inline_name, path, inline_line.line_num);
@@ -1266,7 +1266,7 @@ rb_thread_entry_point(void *p)
} }
PathStyle path_style = PathStyle_SystemAbsolute; PathStyle path_style = PathStyle_SystemAbsolute;
if (str8_match_wildcard(top_part, str8_lit("?:"), 0)) { path_style = PathStyle_WindowsAbsolute; } if (str8_match_wildcard(top_part, str8_lit("?:"), 0)) { path_style = PathStyle_WindowsAbsolute; }
else if(str8_match(top_part, str8_lit("/"), 0)) { path_style = PathStyle_UnixAbsolute; } else if(str8_match_wildcard(top_part, str8_lit("/*"), 0)) { path_style = PathStyle_UnixAbsolute; }
String8 path = str8_from_rdi_path_node_idx(scratch.arena, rdi, path_style, src_file->file_path_node_idx); String8 path = str8_from_rdi_path_node_idx(scratch.arena, rdi, path_style, src_file->file_path_node_idx);
str8_list_pushf(arena, &output_blobs, "%S:%u\n", path, line.line_num); str8_list_pushf(arena, &output_blobs, "%S:%u\n", path, line.line_num);
+3 -1
View File
@@ -61,7 +61,9 @@ str8_from_rdi_path_node_idx(Arena *arena, RDI_Parsed *rdi, PathStyle path_style,
{ {
String8 path_part = {0}; String8 path_part = {0};
path_part.str = rdi_string_from_idx(rdi, fpn->name_string_idx, &path_part.size); path_part.str = rdi_string_from_idx(rdi, fpn->name_string_idx, &path_part.size);
str8_list_push_front(scratch.arena, &path_parts, path_part); String8List s = str8_split_path(scratch.arena, path_part);
str8_list_concat_in_place(&s, &path_parts);
path_parts = s;
} }
String8 path = str8_path_list_join_by_style(arena, &path_parts, path_style); String8 path = str8_path_list_join_by_style(arena, &path_parts, path_style);
scratch_end(scratch); scratch_end(scratch);
+1 -2
View File
@@ -2862,8 +2862,7 @@ d2r_convert(Arena *arena, D2R_ConvertParams *params)
String8 path; String8 path;
{ {
Temp temp = temp_begin(scratch.arena); Temp temp = temp_begin(scratch.arena);
PathStyle path_style = PathStyle_Null; PathStyle path_style = path_style_from_str8(lookup->vm->header.dir_table.v[src->dir_idx]);
path_style = path_style_from_str8(lookup->vm->header.dir_table.v[src->dir_idx]);
if (path_style == PathStyle_Relative) { if (path_style == PathStyle_Relative) {
path_style = path_style_from_str8(src->path); path_style = path_style_from_str8(src->path);
} }