aboutsummaryrefslogtreecommitdiff
path: root/src/ir.cpp
diff options
context:
space:
mode:
authorSam Tebbs <sam.tebbs@arm.com>2019-08-07 11:51:12 +0100
committerAndrew Kelley <andrew@ziglang.org>2019-08-07 14:11:18 -0700
commit8621e3b5bd814005129b58469d93c2499e3d085e (patch)
tree6d4856c53ad6ec8fa33357ffb7a2cc3e79c56707 /src/ir.cpp
parent2cd5e555818583e77e5601d43d55339e8c4017b0 (diff)
downloadzig-8621e3b5bd814005129b58469d93c2499e3d085e.tar.gz
zig-8621e3b5bd814005129b58469d93c2499e3d085e.zip
Don't emit clang error if source or filename pointer is null
Diffstat (limited to 'src/ir.cpp')
-rw-r--r--src/ir.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/ir.cpp b/src/ir.cpp
index 65a21a418d..2b096a3383 100644
--- a/src/ir.cpp
+++ b/src/ir.cpp
@@ -21312,12 +21312,15 @@ static IrInstruction *ir_analyze_instruction_c_import(IrAnalyze *ira, IrInstruct
}
for (size_t i = 0; i < errors_len; i += 1) {
Stage2ErrorMsg *clang_err = &errors_ptr[i];
- ErrorMsg *err_msg = err_msg_create_with_offset(
- clang_err->filename_ptr ?
- buf_create_from_mem(clang_err->filename_ptr, clang_err->filename_len) : buf_alloc(),
- clang_err->line, clang_err->column, clang_err->offset, clang_err->source,
- buf_create_from_mem(clang_err->msg_ptr, clang_err->msg_len));
- err_msg_add_note(parent_err_msg, err_msg);
+ // Clang can emit "too many errors, stopping now", in which case `source` and `filename_ptr` are null
+ if (clang_err->source && clang_err->filename_ptr) {
+ ErrorMsg *err_msg = err_msg_create_with_offset(
+ clang_err->filename_ptr ?
+ buf_create_from_mem(clang_err->filename_ptr, clang_err->filename_len) : buf_alloc(),
+ clang_err->line, clang_err->column, clang_err->offset, clang_err->source,
+ buf_create_from_mem(clang_err->msg_ptr, clang_err->msg_len));
+ err_msg_add_note(parent_err_msg, err_msg);
+ }
}
return ira->codegen->invalid_instruction;