core: avoid allocating for small pwd change actions

Surface.handleMessage allocated a null-terminated copy for every working
directory update.

Use a small 256-byte stack-fallback buffer for common working directory
lengths without adding significant pressure to this deep call stack. Longer
paths retain the existing heap behavior, and performAction continues to borrow
the value only for the duration of the call.
This commit is contained in:
Jon Parise
2026-08-05 14:32:36 -04:00
parent 168c7b9467
commit f1d225020a

View File

@@ -1073,9 +1073,10 @@ pub fn handleMessage(self: *Surface, msg: Message) !void {
.pwd_change => |w| {
defer w.deinit();
// We always allocate for this because we need to null-terminate.
const str = try self.alloc.dupeZ(u8, w.slice());
defer self.alloc.free(str);
var stack = std.heap.stackFallback(256, self.alloc);
const alloc = stack.get();
const str = try alloc.dupeZ(u8, w.slice());
defer alloc.free(str);
_ = try self.rt_app.performAction(
.{ .surface = self },