Commit fe0c6a3df9

Andrew Kelley <superjoe30@gmail.com>
2016-01-27 20:06:47
fix crash when compiling empty file
closes #90
1 parent fa1ea60
Changed files (2)
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;
 }
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) {