authorgravatar for squeek502@hotmail.comRyan Liptak <squeek502@hotmail.com> 2022-10-05 16:15:25-07:00
committergravatar for squeek502@hotmail.comRyan Liptak <squeek502@hotmail.com> 2022-10-05 16:15:25-07:00
log34f180901eaa0fcd5e3bddc6f353604da8bd7e1f
treef503aeafcdd671a3ddde33a69f38e51c8192379e
parent39f192d54eba99ba3dfc7066476912633e694d51

fs: deleteTreeFallback -> deleteTreeMinStackSize and make it pub


1 files changed, 8 insertions(+), 4 deletions(-)

lib/std/fs.zig+8-4
......@@ -2178,7 +2178,7 @@ pub const Dir = struct {
21782178 });
21792179 continue :process_stack;
21802180 } else |_| {
2181 try top.iter.dir.deleteTreeFallback(entry.name, entry.kind);
2181 try top.iter.dir.deleteTreeMinStackSizeWithKindHint(entry.name, entry.kind);
21822182 break :handle_entry;
21832183 }
21842184 } else {
......@@ -2225,9 +2225,13 @@ pub const Dir = struct {
22252225 }
22262226 }
22272227
2228 /// Fallback version of deleteTree that is less efficient but works on arbitrarily
2229 /// nested directories without needing recursion or allocation.
2230 fn deleteTreeFallback(self: Dir, sub_path: []const u8, kind_hint: File.Kind) DeleteTreeError!void {
2228 /// Like `deleteTree`, but only keeps one `Iterator` active at a time to minimize the function's stack size.
2229 /// This is slower than `deleteTree` but uses less stack space.
2230 pub fn deleteTreeMinStackSize(self: Dir, sub_path: []const u8) DeleteTreeError!void {
2231 return self.deleteTreeMinStackWithKindHint(sub_path, .File);
2232 }
2233
2234 fn deleteTreeMinStackSizeWithKindHint(self: Dir, sub_path: []const u8, kind_hint: File.Kind) DeleteTreeError!void {
22312235 start_over: while (true) {
22322236 var iterable_dir = iterable_dir: {
22332237 var treat_as_dir = kind_hint == .Directory;