diff options
author | 2021-11-07 14:44:55 -0800 | |
---|---|---|
committer | 2021-11-07 14:44:55 -0800 | |
commit | 3cb7dbe9218f274ba436d440ef661449073168d5 (patch) | |
tree | 8e9fa33c1cc1ac3fd0f746d0b2b00c7a3ee53eaa /src | |
parent | bc3c17ffc8cd56e92c4002ef923e9ae0e0e30246 (diff) | |
download | bun-3cb7dbe9218f274ba436d440ef661449073168d5.tar.gz bun-3cb7dbe9218f274ba436d440ef661449073168d5.tar.zst bun-3cb7dbe9218f274ba436d440ef661449073168d5.zip |
[resolver] Fix race condition that can cause the elapsed counter to integer overflow
Diffstat (limited to 'src')
-rw-r--r-- | src/resolver/resolver.zig | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/resolver/resolver.zig b/src/resolver/resolver.zig index 5816ebd6b..294b6a833 100644 --- a/src/resolver/resolver.zig +++ b/src/resolver/resolver.zig @@ -592,13 +592,17 @@ pub const Resolver = struct { pub fn resolve(r: *ThisResolver, source_dir: string, import_path: string, kind: ast.ImportKind) !Result { r.extension_order = if (kind.isFromCSS()) std.mem.span(&options.BundleOptions.Defaults.CSSExtensionOrder) else r.opts.extension_order; + var timer: ?std.time.Timer = null; if (FeatureFlags.tracing) { - r.timer.reset(); + timer = std.time.Timer.start() catch null; } defer { if (FeatureFlags.tracing) { - r.elapsed += r.timer.read(); + if (timer) |time| { + // technically, this should be an atomic op + r.elapsed += time.read(); + } } } if (r.log.level == .verbose) { |