diff options
author | 2022-12-29 21:46:15 -0800 | |
---|---|---|
committer | 2022-12-29 21:46:15 -0800 | |
commit | 7be1e85c6d367ca18da1958e1a6435748ab0706f (patch) | |
tree | 02522b63910cbe15bcab94d20a4248de3b4addd8 | |
parent | 4cc9a430897e08895807ba97987894731f6fadc5 (diff) | |
download | bun-7be1e85c6d367ca18da1958e1a6435748ab0706f.tar.gz bun-7be1e85c6d367ca18da1958e1a6435748ab0706f.tar.zst bun-7be1e85c6d367ca18da1958e1a6435748ab0706f.zip |
Fix OOB when deinit'ing dir walker
-rw-r--r-- | src/walker_skippable.zig | 11 |
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(); } |