summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-09-28 01:09:59 -0300
committerGabriel Schneider <[email protected]>2026-10-01 00:12:14 -0300
commitbb380c6b44b649a2e9192311478ee52d69c702dc (patch)
tree14b01cb3d2c7f5c511ea76020dc06a9b8d8bcdb5 /src
parentf48ab559a4d257137a3aae987a4962f9d74ede23 (diff)
downloadpardes-bb380c6b44b649a2e9192311478ee52d69c702dc.tar.gz
pardes-bb380c6b44b649a2e9192311478ee52d69c702dc.zip
Free a pane's texts with Text.deinit alone
Teardown freed the body's undo by hand beside the tag's deinit, and the prompt line's characters by hand too; the three texts now go the same way, so what a Text owns is freed in one place. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/panes.zig3
-rw-r--r--src/pardes.zig5
2 files changed, 3 insertions, 5 deletions
diff --git a/src/panes.zig b/src/panes.zig
index 356f4913..1e5be107 100644
--- a/src/panes.zig
+++ b/src/panes.zig
@@ -312,8 +312,7 @@ pub const Pane = struct {
/// Close an open prompt, answered or not. Its answer goes with it, and an
/// s/S preview keeps whatever it last previewed.
pub fn closePrompt(pane: *Pane) void {
- if (pane.input.own) |text| pane.gpa.free(text);
- pane.input = .{ .what = .input };
+ pane.input.deinit(pane.gpa);
pane.prompt = .none;
pane.nsel_snap = 0;
}
diff --git a/src/pardes.zig b/src/pardes.zig
index 40e49d6a..b7cf5574 100644
--- a/src/pardes.zig
+++ b/src/pardes.zig
@@ -4120,10 +4120,9 @@ pub const Pardes = struct {
if (comptime pdf_enabled) if (pane.pdf) |*pv| panes.Pdf.deinitPane(p, pane, pv);
if (pane.file) |*file| panes.File.deinit(p, pane, file);
if (pane.ovl) |o| p.gpa.free(o.text);
- if (pane.input.own) |text| p.gpa.free(text);
+ pane.body.deinit(p.gpa);
pane.tag.deinit(p.gpa);
- for (pane.body.ed_undo[0..pane.body.ed_undo_len]) |sn| if (sn.ovl) |o| p.gpa.free(o.text);
- for (pane.body.ed_redo[0..pane.body.ed_redo_len]) |sn| if (sn.ovl) |o| p.gpa.free(o.text);
+ pane.input.deinit(p.gpa);
panes.Terminal.deinitEmulator(pane, p.gpa);
pane.clearCwd();
pane.fs.deinit(p.gpa);