aboutsummaryrefslogtreecommitdiff
path: root/src/javascript
diff options
context:
space:
mode:
Diffstat (limited to 'src/javascript')
m---------src/javascript/jsc/WebKit0
-rw-r--r--src/javascript/jsc/javascript.zig12
-rw-r--r--src/javascript/jsc/webcore/response.zig1
3 files changed, 8 insertions, 5 deletions
diff --git a/src/javascript/jsc/WebKit b/src/javascript/jsc/WebKit
-Subproject 1d5ca69e3eedd5b4d1197bbb90860b254a8a8ee
+Subproject e7d31961d4bf98b3e8b1df3ea0398ea1517a61d
diff --git a/src/javascript/jsc/javascript.zig b/src/javascript/jsc/javascript.zig
index 24b59f91f..e4c09c3d2 100644
--- a/src/javascript/jsc/javascript.zig
+++ b/src/javascript/jsc/javascript.zig
@@ -1330,6 +1330,9 @@ pub const EventListenerMixin = struct {
ctx: *CtxType,
comptime onError: fn (ctx: *CtxType, err: anyerror, value: JSValue, request_ctx: *http.RequestContext) anyerror!void,
) !void {
+ defer {
+ if (request_context.has_called_done) request_context.arena.deinit();
+ }
var listeners = vm.event_listeners.get(EventType.fetch) orelse (return onError(ctx, error.NoListeners, JSValue.jsUndefined(), request_context) catch {});
if (listeners.items.len == 0) return onError(ctx, error.NoListeners, JSValue.jsUndefined(), request_context) catch {};
const FetchEventRejectionHandler = struct {
@@ -1346,6 +1349,7 @@ pub const EventListenerMixin = struct {
// Rely on JS finalizer
var fetch_event = try vm.allocator.create(FetchEvent);
+
fetch_event.* = FetchEvent{
.request_context = request_context,
.request = Request{ .request_context = request_context },
@@ -1366,7 +1370,7 @@ pub const EventListenerMixin = struct {
if (fetch_event.rejected) return;
if (promise.status(vm.global.vm()) == .Rejected) {
- onError(ctx, error.JSError, promise.result(vm.global.vm()), request_context) catch {};
+ onError(ctx, error.JSError, promise.result(vm.global.vm()), fetch_event.request_context) catch {};
return;
} else {
_ = promise.result(vm.global.vm());
@@ -1374,13 +1378,13 @@ pub const EventListenerMixin = struct {
vm.global.vm().drainMicrotasks();
- if (request_context.has_called_done) {
+ if (fetch_event.request_context.has_called_done) {
break;
}
}
- if (!request_context.has_called_done) {
- onError(ctx, error.FetchHandlerRespondWithNeverCalled, JSValue.jsUndefined(), request_context) catch {};
+ if (!fetch_event.request_context.has_called_done) {
+ onError(ctx, error.FetchHandlerRespondWithNeverCalled, JSValue.jsUndefined(), fetch_event.request_context) catch {};
return;
}
}
diff --git a/src/javascript/jsc/webcore/response.zig b/src/javascript/jsc/webcore/response.zig
index b62645218..cd4dff8c8 100644
--- a/src/javascript/jsc/webcore/response.zig
+++ b/src/javascript/jsc/webcore/response.zig
@@ -1145,7 +1145,6 @@ pub const FetchEvent = struct {
},
);
}
- this.request_context.arena.deinit();
}
var needs_mime_type = true;