Commit 8ff49966bc

Ryan Liptak <squeek502@hotmail.com>
2021-08-14 01:20:51
fs.Walker: Fix basename missing its first character for direct children of the initial directory
Closes #9557
1 parent 0686954
Changed files (1)
lib
std
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,
                     };