zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit fe0c6a3df9480cc3d0be7412cd24bba4366c18a1 (tree)
parent fa1ea6062b172e75674353ee19857db9046ec9ee
Author: Andrew Kelley <superjoe30@gmail.com>
Date:   Wed, 27 Jan 2016 12:06:47 -0700

fix crash when compiling empty file

closes #90

Diffstat:
Msrc/errmsg.cpp | 7+++++--
Mtest/run_tests.cpp | 3+++
2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/errmsg.cpp b/src/errmsg.cpp @@ -80,9 +80,12 @@ ErrorMsg *err_msg_create_with_line(Buf *path, int line, int column, int line_start_offset = line_offsets->at(line); int end_line = line + 1; int line_end_offset = (end_line >= line_offsets->length) ? buf_len(source) : line_offsets->at(line + 1); + int len = line_end_offset - line_start_offset - 1; + if (len < 0) { + len = 0; + } - buf_init_from_mem(&err_msg->line_buf, buf_ptr(source) + line_start_offset, - line_end_offset - line_start_offset - 1); + buf_init_from_mem(&err_msg->line_buf, buf_ptr(source) + line_start_offset, len); return err_msg; } diff --git a/test/run_tests.cpp b/test/run_tests.cpp @@ -1680,6 +1680,9 @@ c_import { )SOURCE", 2, ".tmp_source.zig:2:1: error: C import failed", ".h:1:10: error: 'bogus.h' file not found"); + add_compile_fail_case("empty file", "", + 1, ".tmp_source.zig:1:1: error: missing export declaration and output name not provided"); + } static void print_compiler_invocation(TestCase *test_case) {