aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-12-07 00:37:21 -0800
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-12-07 00:37:40 -0800
commita13e64c28645f0a1dcd36bd986fc57cf2d91ef7e (patch)
tree608a4307190eee0db82e1b31946d2b9965d26b90
parent60d0e6b73fc01896b02d83c9f845b5e12727d194 (diff)
downloadbun-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.zig41
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 };