diff options
-rw-r--r-- | src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.cpp | 4 | ||||
-rw-r--r-- | src/bun.js/builtins/js/ImportMetaObject.js | 2 | ||||
-rw-r--r-- | src/bun.js/javascript.zig | 29 |
3 files changed, 19 insertions, 16 deletions
diff --git a/src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.cpp b/src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.cpp index c24d67a81..65d2f206c 100644 --- a/src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.cpp +++ b/src/bun.js/builtins/cpp/ImportMetaObjectBuiltins.cpp @@ -96,7 +96,7 @@ const char* const s_importMetaObjectRequireCode = const JSC::ConstructAbility s_importMetaObjectLoadModuleCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; const JSC::ConstructorKind s_importMetaObjectLoadModuleCodeConstructorKind = JSC::ConstructorKind::None; -const int s_importMetaObjectLoadModuleCodeLength = 2818; +const int s_importMetaObjectLoadModuleCodeLength = 2834; static const JSC::Intrinsic s_importMetaObjectLoadModuleCodeIntrinsic = JSC::NoIntrinsic; const char* const s_importMetaObjectLoadModuleCode = "(function (meta, resolvedSpecifier) {\n" \ @@ -110,7 +110,7 @@ const char* const s_importMetaObjectLoadModuleCode = " //\n" \ " var entry = Loader.registry.@get(key);\n" \ "\n" \ - " if (!entry || entry.state <= @ModuleFetch) {\n" \ + " if (!entry || !entry.state || entry.state <= @ModuleFetch) {\n" \ " @fulfillModuleSync(key);\n" \ " entry = Loader.registry.@get(key);\n" \ " }\n" \ diff --git a/src/bun.js/builtins/js/ImportMetaObject.js b/src/bun.js/builtins/js/ImportMetaObject.js index 40e60ed22..6d9fdb00d 100644 --- a/src/bun.js/builtins/js/ImportMetaObject.js +++ b/src/bun.js/builtins/js/ImportMetaObject.js @@ -75,7 +75,7 @@ function loadModule(meta, resolvedSpecifier) { // @throwTypeError("Requested module is already fetched."); var entry = Loader.registry.@get(key); - if (!entry || entry.state <= @ModuleFetch) { + if (!entry || !entry.state || entry.state <= @ModuleFetch) { @fulfillModuleSync(key); entry = Loader.registry.@get(key); } diff --git a/src/bun.js/javascript.zig b/src/bun.js/javascript.zig index 0908505a3..90356fafa 100644 --- a/src/bun.js/javascript.zig +++ b/src/bun.js/javascript.zig @@ -1074,18 +1074,18 @@ pub const VirtualMachine = struct { jsc_vm.bundler.linker.import_counter = 0; var printer = source_code_printer.?.*; - defer source_code_printer.?.* = printer; printer.ctx.reset(); - var written: usize = 0; - - written = try jsc_vm.bundler.printWithSourceMap( - parse_result, - @TypeOf(&printer), - &printer, - .esm_ascii, - SavedSourceMap.SourceMapHandler.init(&jsc_vm.source_mappings), - ); + const written = brk: { + defer source_code_printer.?.* = printer; + break :brk try jsc_vm.bundler.printWithSourceMap( + parse_result, + @TypeOf(&printer), + &printer, + .esm_ascii, + SavedSourceMap.SourceMapHandler.init(&jsc_vm.source_mappings), + ); + }; if (written == 0) { return error.PrintingErrorWriteFailed; @@ -1097,11 +1097,14 @@ pub const VirtualMachine = struct { return ResolvedSource{ .allocator = null, - .source_code = ZigString.init(printer.ctx.writtenWithoutTrailingZero()), + .source_code = ZigString.init(try default_allocator.dupe(u8, printer.ctx.getWritten())), .specifier = ZigString.init(specifier), .source_url = ZigString.init(path.text), - // TODO: change hash to a bitfield - .hash = 1, + // // TODO: change hash to a bitfield + // .hash = 1, + + // having JSC own the memory causes crashes + .hash = 0, }; }, // provideFetch() should be called |