diff --git a/src/coff/coff_parse.c b/src/coff/coff_parse.c index aa33fb07..dd501ec5 100644 --- a/src/coff/coff_parse.c +++ b/src/coff/coff_parse.c @@ -481,13 +481,13 @@ coff_resource_id_compar(void *raw_a, void *raw_b) COFF_ResourceID *b = raw_b; if (a->type == b->type) { switch (a->type) { - case COFF_ResourceIDType_Null: break; - case COFF_ResourceIDType_Number: cmp = u16_compar(&a->u.number, &b->u.number); break; - case COFF_ResourceIDType_String: cmp = str8_compar_case_sensitive(&a->u.string, &b->u.string); break; + case COFF_ResourceIDType_Null: cmp = 0; break; + case COFF_ResourceIDType_Number: cmp = a->u.number < b->u.number ? -1 : a->u.number > b->u.number ? +1 : 0; break; + case COFF_ResourceIDType_String: cmp = strncmp((char *)a->u.string.str, (char *)b->u.string.str, Min(a->u.string.size, b->u.string.size)); break; default: InvalidPath; break; } } else { - cmp = u32_compar(&a->type, &b->type); + cmp = a->type < b->type ? -1 : a->type > b->type ? +1 : 0; } return cmp; } diff --git a/src/linker/lnk.c b/src/linker/lnk.c index 89a3b31c..764acaf1 100644 --- a/src/linker/lnk.c +++ b/src/linker/lnk.c @@ -1234,6 +1234,7 @@ lnk_push_input_from_lazy(Arena *arena, PathStyle path_style, LNK_LazySymbol *laz COFF_DataType member_type = coff_data_type_from_data(member_info.data); switch (member_type) { + case COFF_DataType_Null: break; case COFF_DataType_Import: { LNK_InputImport *input = lnk_input_import_list_push(arena, input_import_list); input->import_header = coff_archive_import_from_data(member_info.data);