aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Justin Whear <justin.whear@gmail.com> 2023-02-24 13:53:18 -0800
committerGravatar GitHub <noreply@github.com> 2023-02-24 13:53:18 -0800
commit6d5f0167c56e061bd4d8ee382e5ff894633f3e4b (patch)
tree6516b68f815b986c60a5f9df4d0fbe781732012c
parentf290b049e80b3359a7551644d2180ab79fa3da96 (diff)
downloadbun-6d5f0167c56e061bd4d8ee382e5ff894633f3e4b.tar.gz
bun-6d5f0167c56e061bd4d8ee382e5ff894633f3e4b.tar.zst
bun-6d5f0167c56e061bd4d8ee382e5ff894633f3e4b.zip
Fix lol_html_rewriter_builder_add_document_content_handlers binding (#2161)
The `lol_html_rewriter_builder_add_document_content_handlers` does not return a status code and always succeeds; errors are reported on subsequent calls to `write` or `end`. Fixes #2024
-rw-r--r--src/bun.js/api/html_rewriter.zig5
-rw-r--r--src/deps/lol-html.zig12
2 files changed, 6 insertions, 11 deletions
diff --git a/src/bun.js/api/html_rewriter.zig b/src/bun.js/api/html_rewriter.zig
index 1c73223a4..881982d5e 100644
--- a/src/bun.js/api/html_rewriter.zig
+++ b/src/bun.js/api/html_rewriter.zig
@@ -162,6 +162,7 @@ pub const HTMLRewriter = struct {
var handler = getAllocator(global).create(DocumentHandler) catch unreachable;
handler.* = handler_;
+ // If this fails, subsequent calls to write or end should throw
this.builder.addDocumentContentHandlers(
DocumentHandler,
DocumentHandler.onDocType,
@@ -190,9 +191,7 @@ pub const HTMLRewriter = struct {
handler
else
null,
- ) catch {
- return throwLOLHTMLError(global);
- };
+ );
this.context.document_handlers.append(bun.default_allocator, handler) catch unreachable;
return JSValue.fromRef(thisObject);
diff --git a/src/deps/lol-html.zig b/src/deps/lol-html.zig
index f042bc111..bb4f4c371 100644
--- a/src/deps/lol-html.zig
+++ b/src/deps/lol-html.zig
@@ -83,7 +83,7 @@ pub const HTMLRewriter = opaque {
text_handler_user_data: ?*anyopaque,
doc_end_handler: ?lol_html_doc_end_handler_t,
doc_end_user_data: ?*anyopaque,
- ) c_int;
+ ) void;
pub fn init() *HTMLRewriter.Builder {
auto_disable();
@@ -121,10 +121,10 @@ pub const HTMLRewriter = opaque {
comptime DocEndHandler: type,
comptime end_tag_handler: ?DirectiveFunctionTypeForHandler(DocEnd, DocEndHandler),
end_tag_handler_data: ?*DocEndHandler,
- ) Error!void {
+ ) void {
auto_disable();
- return switch (builder.lol_html_rewriter_builder_add_document_content_handlers(
+ builder.lol_html_rewriter_builder_add_document_content_handlers(
if (doctype_handler_data != null)
DirectiveHandler(DocType, DocTypeHandler, doctype_handler.?)
else
@@ -145,11 +145,7 @@ pub const HTMLRewriter = opaque {
else
null,
end_tag_handler_data,
- )) {
- 0 => void{},
- -1 => error.Fail,
- else => unreachable,
- };
+ );
}
/// Adds element content handlers to the builder for the