authorgravatar for squeek502@hotmail.comRyan Liptak <squeek502@hotmail.com> 2021-08-13 16:20:51-07:00
committergravatar for squeek502@hotmail.comRyan Liptak <squeek502@hotmail.com> 2021-08-13 16:22:56-07:00
log8ff49966bc9d6d7438640fa475e95f9a24a4b931
tree4287b09563c0d56490ef547b53cc9bc4993e1fab
parent0686954802d17e87114542878615fd0a9a245e49

fs.Walker: Fix basename missing its first character for direct children of the initial directory

Closes #9557

1 files changed, 3 insertions(+), 2 deletions(-)

lib/std/fs.zig+3-2
...@@ -763,11 +763,12 @@ pub const Dir = struct {...@@ -763,11 +763,12 @@ pub const Dir = struct {
763 while (self.stack.items.len != 0) {763 while (self.stack.items.len != 0) {
764 // `top` becomes invalid after appending to `self.stack`764 // `top` becomes invalid after appending to `self.stack`
765 var top = &self.stack.items[self.stack.items.len - 1];765 var top = &self.stack.items[self.stack.items.len - 1];
766 const dirname_len = top.dirname_len;766 var dirname_len = top.dirname_len;
767 if (try top.iter.next()) |base| {767 if (try top.iter.next()) |base| {
768 self.name_buffer.shrinkRetainingCapacity(dirname_len);768 self.name_buffer.shrinkRetainingCapacity(dirname_len);
769 if (self.name_buffer.items.len != 0) {769 if (self.name_buffer.items.len != 0) {
770 try self.name_buffer.append(path.sep);770 try self.name_buffer.append(path.sep);
771 dirname_len += 1;
771 }772 }
772 try self.name_buffer.appendSlice(base.name);773 try self.name_buffer.appendSlice(base.name);
773 if (base.kind == .Directory) {774 if (base.kind == .Directory) {
...@@ -786,7 +787,7 @@ pub const Dir = struct {...@@ -786,7 +787,7 @@ pub const Dir = struct {
786 }787 }
787 return WalkerEntry{788 return WalkerEntry{
788 .dir = top.iter.dir,789 .dir = top.iter.dir,
789 .basename = self.name_buffer.items[dirname_len + 1 ..],790 .basename = self.name_buffer.items[dirname_len..],
790 .path = self.name_buffer.items,791 .path = self.name_buffer.items,
791 .kind = base.kind,792 .kind = base.kind,
792 };793 };