diff options
| -rw-r--r-- | src/walker_skippable.zig | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/src/walker_skippable.zig b/src/walker_skippable.zig index b52895b51..cc3f3fa22 100644 --- a/src/walker_skippable.zig +++ b/src/walker_skippable.zig @@ -38,15 +38,30 @@ pub fn next(self: *Walker) !?WalkerEntry { if (try top.iter.next()) |base| { switch (base.kind) { .Directory => { - if (std.mem.indexOfScalar(u64, self.skip_dirnames, std.hash.Wyhash.hash(self.seed, base.name)) != null) continue; + if (std.mem.indexOfScalar( + u64, + self.skip_dirnames, + // avoid hashing if there will be 0 results + if (self.skip_dirnames.len > 0) std.hash.Wyhash.hash(self.seed, base.name) else 0, + ) != null) continue; }, .File => { - if (std.mem.indexOfScalar(u64, self.skip_filenames, std.hash.Wyhash.hash(self.seed, base.name)) != null) continue; + if (std.mem.indexOfScalar( + u64, + self.skip_filenames, + // avoid hashing if there will be 0 results + if (self.skip_filenames.len > 0) std.hash.Wyhash.hash(self.seed, base.name) else 0, + ) != null) continue; }, // we don't know what it is for a symlink .SymLink => { - if (std.mem.indexOfScalar(u64, self.skip_all, std.hash.Wyhash.hash(self.seed, base.name)) != null) continue; + if (std.mem.indexOfScalar( + u64, + self.skip_all, + // avoid hashing if there will be 0 results + if (self.skip_all.len > 0) std.hash.Wyhash.hash(self.seed, base.name) else 0, + ) != null) continue; }, else => {}, |
