diff options
author | 2022-12-07 00:37:21 -0800 | |
---|---|---|
committer | 2022-12-07 00:37:40 -0800 | |
commit | a13e64c28645f0a1dcd36bd986fc57cf2d91ef7e (patch) | |
tree | 608a4307190eee0db82e1b31946d2b9965d26b90 | |
parent | 60d0e6b73fc01896b02d83c9f845b5e12727d194 (diff) | |
download | bun-a13e64c28645f0a1dcd36bd986fc57cf2d91ef7e.tar.gz bun-a13e64c28645f0a1dcd36bd986fc57cf2d91ef7e.tar.zst bun-a13e64c28645f0a1dcd36bd986fc57cf2d91ef7e.zip |
Update html_rewriter.zigbun-v0.3.0
-rw-r--r-- | src/bun.js/api/html_rewriter.zig | 41 |
1 files changed, 19 insertions, 22 deletions
diff --git a/src/bun.js/api/html_rewriter.zig b/src/bun.js/api/html_rewriter.zig index b3256c9af..8828ea8ff 100644 --- a/src/bun.js/api/html_rewriter.zig +++ b/src/bun.js/api/html_rewriter.zig @@ -820,6 +820,8 @@ fn HandlerCallback( JSC.markBinding(@src()); var zig_element = bun.default_allocator.create(ZigType) catch unreachable; @field(zig_element, field_name) = value; + defer @field(zig_element, field_name) = null; + // At the end of this scope, the value is no longer valid var args = [1]JSC.C.JSObjectRef{ ZigType.Class.make(this.global, zig_element), @@ -834,33 +836,28 @@ fn HandlerCallback( 1, &args, ); - var promise_: ?*JSC.JSInternalPromise = null; - while (!result.isUndefinedOrNull()) { + + if (!result.isUndefinedOrNull()) { if (result.isError() or result.isAggregateError(this.global)) { - @field(zig_element, field_name) = null; return true; } - var promise = promise_ orelse JSC.JSInternalPromise.resolvedPromise(this.global, result); - promise_ = promise; - JavaScript.VirtualMachine.vm.event_loop.waitForPromise(promise); - - switch (promise.status(this.global.vm())) { - JSC.JSPromise.Status.Pending => unreachable, - JSC.JSPromise.Status.Rejected => { - JavaScript.VirtualMachine.vm.onUnhandledError(this.global, promise.result(this.global.vm())); - @field(zig_element, field_name) = null; - return false; - }, - JSC.JSPromise.Status.Fulfilled => { - result = promise.result(this.global.vm()); - break; - }, + if (result.asPromise()) |promise| { + this.global.bunVM().waitForPromise(promise); + const fail = promise.status(this.global.vm()) == .Rejected; + if (fail) { + this.global.bunVM().runErrorHandler(promise.result(this.global.vm()), null); + } + return fail; + } else if (result.asInternalPromise()) |promise| { + this.global.bunVM().waitForPromise(promise); + const fail = promise.status(this.global.vm()) == .Rejected; + if (fail) { + this.global.bunVM().runErrorHandler(promise.result(this.global.vm()), null); + } + return fail; } - - break; } - @field(zig_element, field_name) = null; return false; } }.callback; @@ -976,7 +973,7 @@ pub const ContentOptions = struct { const getterWrap = JSC.getterWrap; const setterWrap = JSC.setterWrap; -const wrap = JSC.wrapAsync; +const wrap = JSC.wrapSync; pub fn free_html_writer_string(_: ?*anyopaque, ptr: ?*anyopaque, len: usize) callconv(.C) void { var str = LOLHTML.HTMLString{ .ptr = bun.cast([*]const u8, ptr.?), .len = len }; |