diff options
Diffstat (limited to 'src/env_loader.zig')
-rw-r--r-- | src/env_loader.zig | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/src/env_loader.zig b/src/env_loader.zig index 0da985793..7c2c38a99 100644 --- a/src/env_loader.zig +++ b/src/env_loader.zig @@ -516,13 +516,26 @@ pub const Loader = struct { }; defer file.close(); - const stat = try file.stat(); - const end = stat.size; + const end = brk: { + if (comptime Environment.isWindows) { + const pos = try file.getEndPos(); + if (pos == 0) { + @field(this, base) = logger.Source.initPathString(base, ""); + return; + } - if (end == 0 or stat.kind != .file) { - @field(this, base) = logger.Source.initPathString(base, ""); - return; - } + break :brk pos; + } + + const stat = try file.stat(); + + if (stat.size == 0 or stat.kind != .file) { + @field(this, base) = logger.Source.initPathString(base, ""); + return; + } + + break :brk stat.size; + }; var buf = try this.allocator.alloc(u8, end + 1); errdefer this.allocator.free(buf); |