mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-12-15 15:58:57 +00:00
ignore errorCallback on shutdown
This commit is contained in:
@@ -103,7 +103,9 @@ pub fn init(browser: *Browser, page: *Page) ScriptManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn deinit(self: *ScriptManager) void {
|
pub fn deinit(self: *ScriptManager) void {
|
||||||
|
// necesasry to free any buffers scripts may be rerferencing
|
||||||
self.reset();
|
self.reset();
|
||||||
|
|
||||||
self.buffer_pool.deinit();
|
self.buffer_pool.deinit();
|
||||||
self.script_pool.deinit();
|
self.script_pool.deinit();
|
||||||
self.imported_modules.deinit(self.allocator);
|
self.imported_modules.deinit(self.allocator);
|
||||||
@@ -227,6 +229,10 @@ pub fn addFromElement(self: *ScriptManager, element: *parser.Element, comptime c
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const list = self.scriptList(script);
|
||||||
|
list.append(&script.node);
|
||||||
|
errdefer list.remove(&script.node);
|
||||||
|
|
||||||
if (remote_url) |url| {
|
if (remote_url) |url| {
|
||||||
var headers = try self.client.newHeaders();
|
var headers = try self.client.newHeaders();
|
||||||
try page.requestCookie(.{}).headersForRequest(page.arena, url, &headers);
|
try page.requestCookie(.{}).headersForRequest(page.arena, url, &headers);
|
||||||
@@ -251,8 +257,6 @@ pub fn addFromElement(self: *ScriptManager, element: *parser.Element, comptime c
|
|||||||
.stack = page.js.stackTrace() catch "???",
|
.stack = page.js.stackTrace() catch "???",
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
self.scriptList(script).append(&script.node);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn scriptList(self: *ScriptManager, script: *const Script) *std.DoublyLinkedList {
|
fn scriptList(self: *ScriptManager, script: *const Script) *std.DoublyLinkedList {
|
||||||
@@ -447,8 +451,10 @@ fn evaluate(self: *ScriptManager) void {
|
|||||||
if (script.complete == false) {
|
if (script.complete == false) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
defer script.deinit(true);
|
defer {
|
||||||
defer _ = self.normal_scripts.popFirst();
|
_ = self.normal_scripts.popFirst();
|
||||||
|
script.deinit(true);
|
||||||
|
}
|
||||||
script.eval(page);
|
script.eval(page);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -468,8 +474,10 @@ fn evaluate(self: *ScriptManager) void {
|
|||||||
if (script.complete == false) {
|
if (script.complete == false) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
defer script.deinit(true);
|
defer {
|
||||||
defer _ = self.defer_scripts.popFirst();
|
_ = self.defer_scripts.popFirst();
|
||||||
|
script.deinit(true);
|
||||||
|
}
|
||||||
script.eval(page);
|
script.eval(page);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -640,8 +648,14 @@ const Script = struct {
|
|||||||
fn errorCallback(ctx: *anyopaque, err: anyerror) void {
|
fn errorCallback(ctx: *anyopaque, err: anyerror) void {
|
||||||
const self: *Script = @ptrCast(@alignCast(ctx));
|
const self: *Script = @ptrCast(@alignCast(ctx));
|
||||||
log.warn(.http, "script fetch error", .{ .req = self.url, .err = err });
|
log.warn(.http, "script fetch error", .{ .req = self.url, .err = err });
|
||||||
|
|
||||||
const manager = self.manager;
|
const manager = self.manager;
|
||||||
manager.scriptList(self).remove(&self.node);
|
manager.scriptList(self).remove(&self.node);
|
||||||
|
if (manager.shutdown) {
|
||||||
|
self.deinit(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (self.mode == .import) {
|
if (self.mode == .import) {
|
||||||
const entry = self.manager.imported_modules.getPtr(self.url).?;
|
const entry = self.manager.imported_modules.getPtr(self.url).?;
|
||||||
entry.* = error.Failed;
|
entry.* = error.Failed;
|
||||||
|
|||||||
Reference in New Issue
Block a user