aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuuk de Gram <luuk@degram.dev>2022-09-12 21:35:28 +0200
committerLuuk de Gram <luuk@degram.dev>2022-09-12 21:35:28 +0200
commit3edf8c7a6cb912597bbc97ad97d554e6e4d96cdb (patch)
tree2039b9fb77c4f3ce9964a6622e51cf01e5fc874a
parent61f317e3862101a22411ac1f6005ef4ef5b8ab56 (diff)
downloadzig-3edf8c7a6cb912597bbc97ad97d554e6e4d96cdb.tar.gz
zig-3edf8c7a6cb912597bbc97ad97d554e6e4d96cdb.zip
wasm-linker: reset file pointer for incremental
On each invocation of `flush()` the file pointer is moved. This means that rather than overwriting the binary file, we're appending to the file. With this commit, we're resetting said pointer to '0' and overwrite the existing binary in incremental mode.
-rw-r--r--src/link/Wasm.zig3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/link/Wasm.zig b/src/link/Wasm.zig
index 14d864c330..6dd3bc56ff 100644
--- a/src/link/Wasm.zig
+++ b/src/link/Wasm.zig
@@ -2218,6 +2218,9 @@ pub fn flushModule(wasm: *Wasm, comp: *Compilation, prog_node: *std.Progress.Nod
// We write the magic bytes at the end so they will only be written
// if everything succeeded as expected. So populate with 0's for now.
try binary_writer.writeAll(&[_]u8{0} ** 8);
+ // (Re)set file pointer to 0
+ try wasm.base.file.?.setEndPos(0);
+ try wasm.base.file.?.seekTo(0);
// Type section
if (wasm.func_types.items.len != 0) {