aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred SUmner <jarred@jarredsumner.com> 2022-12-29 21:46:15 -0800
committerGravatar Jarred SUmner <jarred@jarredsumner.com> 2022-12-29 21:46:15 -0800
commit7be1e85c6d367ca18da1958e1a6435748ab0706f (patch)
tree02522b63910cbe15bcab94d20a4248de3b4addd8
parent4cc9a430897e08895807ba97987894731f6fadc5 (diff)
downloadbun-7be1e85c6d367ca18da1958e1a6435748ab0706f.tar.gz
bun-7be1e85c6d367ca18da1958e1a6435748ab0706f.tar.zst
bun-7be1e85c6d367ca18da1958e1a6435748ab0706f.zip
Fix OOB when deinit'ing dir walker
-rw-r--r--src/walker_skippable.zig11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/walker_skippable.zig b/src/walker_skippable.zig
index 53eff3325..489a46d0b 100644
--- a/src/walker_skippable.zig
+++ b/src/walker_skippable.zig
@@ -108,12 +108,15 @@ pub fn next(self: *Walker) !?WalkerEntry {
}
pub fn deinit(self: *Walker) void {
- for (self.stack.items[1..]) |*item| {
- if (self.stack.items.len != 0) {
- item.iter.dir.close();
+ if (self.stack.items.len > 0) {
+ for (self.stack.items[1..]) |*item| {
+ if (self.stack.items.len != 0) {
+ item.iter.dir.close();
+ }
}
+ self.stack.deinit();
}
- self.stack.deinit();
+
self.name_buffer.allocator.free(self.skip_all);
self.name_buffer.deinit();
}