diff --git a/lib/compiler/resinator/main.zig b/lib/compiler/resinator/main.zig index 8e6859978e..c0b99855dc 100644 --- a/lib/compiler/resinator/main.zig +++ b/lib/compiler/resinator/main.zig @@ -47,9 +47,9 @@ pub fn main() !void { }; if (zig_integration) { - // Send progress with an empty string to indicate that the building of the + // Send progress with a special string to indicate that the building of the // resinator binary is finished and we've moved on to actually compiling the .rc file - try error_handler.server.serveStringMessage(.progress, ""); + try error_handler.server.serveStringMessage(.progress, ""); } var options = options: { diff --git a/src/Compilation.zig b/src/Compilation.zig index 3f312e9956..2fce786856 100644 --- a/src/Compilation.zig +++ b/src/Compilation.zig @@ -5042,12 +5042,18 @@ fn spawnZigRc( }, .progress => { node_name.clearRetainingCapacity(); - if (body.len > 0) { + // is a special string that indicates that the child + // process has reached resinator's main function + if (std.mem.eql(u8, body, "")) { + child_progress_node.setName(src_basename); + } + // Ignore 0-length strings since if multiple zig rc commands + // are executed at the same time, only one will send progress strings + // while the other(s) will send empty strings. + else if (body.len > 0) { try node_name.appendSlice(arena, "build 'zig rc'... "); try node_name.appendSlice(arena, body); child_progress_node.setName(node_name.items); - } else { - child_progress_node.setName(src_basename); } }, else => {}, // ignore other messages