diff options
| author | Sam Tebbs <sam.tebbs@arm.com> | 2019-08-07 11:51:12 +0100 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2019-08-07 14:11:18 -0700 |
| commit | 8621e3b5bd814005129b58469d93c2499e3d085e (patch) | |
| tree | 6d4856c53ad6ec8fa33357ffb7a2cc3e79c56707 /src/ir.cpp | |
| parent | 2cd5e555818583e77e5601d43d55339e8c4017b0 (diff) | |
| download | zig-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.cpp | 15 |
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; |
