From 8ff49966bc9d6d7438640fa475e95f9a24a4b931 Mon Sep 17 00:00:00 2001 From: Ryan Liptak Date: Fri, 13 Aug 2021 16:20:51 -0700 Subject: [PATCH] fs.Walker: Fix basename missing its first character for direct children of the initial directory Closes #9557 --- lib/std/fs.zig | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/std/fs.zig b/lib/std/fs.zig index 3c5399e6a4..598bb7a666 100644 --- a/lib/std/fs.zig +++ b/lib/std/fs.zig @@ -763,11 +763,12 @@ pub const Dir = struct { while (self.stack.items.len != 0) { // `top` becomes invalid after appending to `self.stack` var top = &self.stack.items[self.stack.items.len - 1]; - const dirname_len = top.dirname_len; + var dirname_len = top.dirname_len; if (try top.iter.next()) |base| { self.name_buffer.shrinkRetainingCapacity(dirname_len); if (self.name_buffer.items.len != 0) { try self.name_buffer.append(path.sep); + dirname_len += 1; } try self.name_buffer.appendSlice(base.name); if (base.kind == .Directory) { @@ -786,7 +787,7 @@ pub const Dir = struct { } return WalkerEntry{ .dir = top.iter.dir, - .basename = self.name_buffer.items[dirname_len + 1 ..], + .basename = self.name_buffer.items[dirname_len..], .path = self.name_buffer.items, .kind = base.kind, };