Commit af835111fa
Changed files (1)
lib
std
lib/std/fs.zig
@@ -958,7 +958,17 @@ pub const IterableDir = struct {
var top = &self.stack.items[self.stack.items.len - 1];
var containing = top;
var dirname_len = top.dirname_len;
- if (try top.iter.next()) |base| {
+ if (top.iter.next() catch |err| {
+ // If we get an error, then we want the user to be able to continue
+ // walking if they want, which means that we need to pop the directory
+ // that errored from the stack. Otherwise, all future `next` calls would
+ // likely just fail with the same error.
+ var item = self.stack.pop();
+ if (self.stack.items.len != 0) {
+ item.iter.dir.close();
+ }
+ return err;
+ }) |base| {
self.name_buffer.shrinkRetainingCapacity(dirname_len);
if (self.name_buffer.items.len != 0) {
try self.name_buffer.append(path.sep);