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 {...@@ -2178,7 +2178,7 @@ pub const Dir = struct {
2178 });2178 });
2179 continue :process_stack;2179 continue :process_stack;
2180 } else |_| {2180 } else |_| {
2181 try top.iter.dir.deleteTreeFallback(entry.name, entry.kind);2181 try top.iter.dir.deleteTreeMinStackSizeWithKindHint(entry.name, entry.kind);
2182 break :handle_entry;2182 break :handle_entry;
2183 }2183 }
2184 } else {2184 } else {
...@@ -2225,9 +2225,13 @@ pub const Dir = struct {...@@ -2225,9 +2225,13 @@ pub const Dir = struct {
2225 }2225 }
2226 }2226 }
22272227
2228 /// Fallback version of deleteTree that is less efficient but works on arbitrarily2228 /// Like `deleteTree`, but only keeps one `Iterator` active at a time to minimize the function's stack size.
2229 /// nested directories without needing recursion or allocation.2229 /// This is slower than `deleteTree` but uses less stack space.
2230 fn deleteTreeFallback(self: Dir, sub_path: []const u8, kind_hint: File.Kind) DeleteTreeError!void {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 {
2231 start_over: while (true) {2235 start_over: while (true) {
2232 var iterable_dir = iterable_dir: {2236 var iterable_dir = iterable_dir: {
2233 var treat_as_dir = kind_hint == .Directory;2237 var treat_as_dir = kind_hint == .Directory;