diff options
author | 2022-06-20 21:36:14 -0700 | |
---|---|---|
committer | 2022-06-22 06:56:47 -0700 | |
commit | 0843e383b249f9ed9b257767e904f2335b65dfc2 (patch) | |
tree | 9cc7818f4b502b1f7fa2790e319bf4bd23079f29 | |
parent | 624bebd20f76bc637de55e08a6ce309b24ededc5 (diff) | |
download | bun-0843e383b249f9ed9b257767e904f2335b65dfc2.tar.gz bun-0843e383b249f9ed9b257767e904f2335b65dfc2.tar.zst bun-0843e383b249f9ed9b257767e904f2335b65dfc2.zip |
Fix error messages sometimes printing undefined memory
-rw-r--r-- | src/javascript/jsc/javascript.zig | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/javascript/jsc/javascript.zig b/src/javascript/jsc/javascript.zig index 66d84fddb..e29dc8274 100644 --- a/src/javascript/jsc/javascript.zig +++ b/src/javascript/jsc/javascript.zig @@ -1232,7 +1232,7 @@ pub const VirtualMachine = struct { // } const main_file_name: string = "bun:main"; - pub threadlocal var errors_stack: [256]*anyopaque = undefined; + pub fn fetch(ret: *ErrorableResolvedSource, global: *JSGlobalObject, specifier: ZigString, source: ZigString) callconv(.C) void { var log = logger.Log.init(vm.bundler.allocator); const spec = specifier.slice(); @@ -1309,6 +1309,8 @@ pub const VirtualMachine = struct { return; }, else => { + var errors_stack: [256]*anyopaque = undefined; + var errors = errors_stack[0..@minimum(log.msgs.items.len, errors_stack.len)]; for (log.msgs.items) |msg, i| { @@ -2202,7 +2204,7 @@ pub const ResolveError = struct { ) js.JSObjectRef { var resolve_error = allocator.create(ResolveError) catch unreachable; resolve_error.* = ResolveError{ - .msg = msg, + .msg = msg.clone(allocator) catch unreachable, .allocator = allocator, .referrer = Fs.Path.init(referrer), }; @@ -2275,6 +2277,10 @@ pub const ResolveError = struct { ) js.JSValueRef { return ZigString.init(BuildErrorName).toValue(ctx.ptr()).asRef(); } + + pub fn finalize(this: *ResolveError) void { + this.msg.deinit(bun.default_allocator); + } }; pub const BuildError = struct { @@ -2362,7 +2368,7 @@ pub const BuildError = struct { ) js.JSObjectRef { var build_error = allocator.create(BuildError) catch unreachable; build_error.* = BuildError{ - .msg = msg, + .msg = msg.clone(allocator) catch unreachable, // .resolve_result = resolve_result.*, .allocator = allocator, }; |