authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-10-26 16:06:14-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-10-26 16:06:14-07:00
log435c8ad703503e4dcc102b0907b45459d2693822
tree2c2a1847430064d4ddb6bd4a74d1e3076ce7680f
parent1ce09948975a148e09bf405f6a899e4fb0730ce6

non-hacky workaround for the empty file bug

See #3328

2 files changed, 4 insertions(+), 5 deletions(-)

src/stage1.zig+2
......@@ -428,5 +428,7 @@ export fn stage2_fetch_file(
428428 const max_file_size = std.math.maxInt(u32);
429429 const contents = comp.stage1_cache_manifest.addFilePostFetch(file_path, max_file_size) catch return null;
430430 result_len.* = contents.len;
431 // TODO https://github.com/ziglang/zig/issues/3328#issuecomment-716749475
432 if (contents.len == 0) return @intToPtr(?[*]const u8, 0x1);
431433 return contents.ptr;
432434}
src/stage1/analyze.cpp+2-5
......@@ -8052,13 +8052,10 @@ not_integer:
80528052}
80538053
80548054Error file_fetch(CodeGen *g, Buf *resolved_path, Buf *contents_buf) {
8055 size_t len = 0xAA;
8055 size_t len;
80568056 const char *contents = stage2_fetch_file(&g->stage1, buf_ptr(resolved_path), buf_len(resolved_path), &len);
8057 if (len == 0) {
8058 // File exists but is empty (otherwise it would be 0xAA)
8059 } else if (contents == nullptr) {
8057 if (contents == nullptr)
80608058 return ErrorFileNotFound;
8061 }
80628059 buf_init_from_mem(contents_buf, contents, len);
80638060 return ErrorNone;
80648061}