| ... | @@ -21312,12 +21312,15 @@ static IrInstruction *ir_analyze_instruction_c_import(IrAnalyze *ira, IrInstruct | ... | @@ -21312,12 +21312,15 @@ static IrInstruction *ir_analyze_instruction_c_import(IrAnalyze *ira, IrInstruct |
| 21312 | } | 21312 | } |
| 21313 | for (size_t i = 0; i < errors_len; i += 1) { | 21313 | for (size_t i = 0; i < errors_len; i += 1) { |
| 21314 | Stage2ErrorMsg *clang_err = &errors_ptr[i]; | 21314 | Stage2ErrorMsg *clang_err = &errors_ptr[i]; |
| 21315 | ErrorMsg *err_msg = err_msg_create_with_offset( | 21315 | 		// Clang can emit "too many errors, stopping now", in which case `source` and `filename_ptr` are null |
| 21316 | clang_err->filename_ptr ? | 21316 | 		if (clang_err->source && clang_err->filename_ptr) { |
| 21317 | buf_create_from_mem(clang_err->filename_ptr, clang_err->filename_len) : buf_alloc(), | 21317 | ErrorMsg *err_msg = err_msg_create_with_offset( |
| 21318 | clang_err->line, clang_err->column, clang_err->offset, clang_err->source, | 21318 | clang_err->filename_ptr ? |
| 21319 | buf_create_from_mem(clang_err->msg_ptr, clang_err->msg_len)); | 21319 | buf_create_from_mem(clang_err->filename_ptr, clang_err->filename_len) : buf_alloc(), |
| 21320 | err_msg_add_note(parent_err_msg, err_msg); | 21320 | clang_err->line, clang_err->column, clang_err->offset, clang_err->source, |
| | 21321 | buf_create_from_mem(clang_err->msg_ptr, clang_err->msg_len)); |
| | 21322 | err_msg_add_note(parent_err_msg, err_msg); |
| | 21323 | 		} |
| 21321 | } | 21324 | } |
| 21322 | | 21325 | |
| 21323 | return ira->codegen->invalid_instruction; | 21326 | return ira->codegen->invalid_instruction; |