summaryrefslogtreecommitdiff
path: root/src/ninep/tree.zig
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-09-28 10:38:30 -0300
committerGabriel Schneider <[email protected]>2026-10-01 00:12:14 -0300
commitb03338789f5c9f3619a1ace7fcda842bc073c4dc (patch)
tree30864a1003615a2b2b5f499aaf393acc8676c3b2 /src/ninep/tree.zig
parentd8382d6ea6692cf07ec6df5a7f2b86ad1f01a9df (diff)
downloadpardes-b03338789f5c9f3619a1ace7fcda842bc073c4dc.tar.gz
pardes-b03338789f5c9f3619a1ace7fcda842bc073c4dc.zip
pty/run on a fresh terminal waits for the shell's first prompt instead of answering busy
A new terminal's shell takes tens of milliseconds to draw its first prompt, and a run written meanwhile answered busy, so a script's first command was lost, while pty/status said busy 0. A line written before the first prompt now waits for it and is sent then (a respawn in between keeps it waiting for the new shell), and pty/status's third field says what a run would be told: busy while a command runs or text is typed at the prompt, not before the first prompt. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'src/ninep/tree.zig')
-rw-r--r--src/ninep/tree.zig5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/ninep/tree.zig b/src/ninep/tree.zig
index 3ce7e758..a83b0193 100644
--- a/src/ninep/tree.zig
+++ b/src/ninep/tree.zig
@@ -139,7 +139,10 @@ pub const Open = struct {
switch (o.what) {
.snapshot => |bytes| if (bytes) |b| gpa.free(b),
.log => |log| gpa.free(log.bytes),
- .run => |run| gpa.free(run.output),
+ .run => |run| {
+ gpa.free(run.output);
+ gpa.free(run.line);
+ },
.event, .pty_data, .ctl => {},
}
o.* = .{};