From 2a95b7a37cf8af5d67ea999214ea0d6aa778fcda Mon Sep 17 00:00:00 2001 From: sjorsdonkers <72333389+sjorsdonkers@users.noreply.github.com> Date: Fri, 9 May 2025 10:33:44 +0200 Subject: [PATCH] Reduce url buffer --- src/browser/browser.zig | 4 ++-- src/url.zig | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/browser/browser.zig b/src/browser/browser.zig index 23bad334..f2bdda0c 100644 --- a/src/browser/browser.zig +++ b/src/browser/browser.zig @@ -193,7 +193,7 @@ pub const Session = struct { // can't use the page arena, because we're about to reset it // and don't want to use the session's arena, because that'll start to // look like a leak if we navigate from page to page a lot. - var buf: [4096]u8 = undefined; + var buf: [2048]u8 = undefined; var fba = std.heap.FixedBufferAllocator.init(&buf); const url = try self.page.?.url.resolve(fba.allocator(), url_string); @@ -732,7 +732,7 @@ pub const Page = struct { _ = repeat_delay; const self: *DelayedNavigation = @fieldParentPtr("navigate_node", node); self.session.pageNavigate(self.href) catch |err| { - log.err("Delayed navigation error {}", .{err}); + log.err("Delayed navigation error {}", .{err}); // TODO: should we trigger a specific event here? }; } }; diff --git a/src/url.zig b/src/url.zig index 709c209b..d6ae81e3 100644 --- a/src/url.zig +++ b/src/url.zig @@ -82,3 +82,19 @@ pub const URL = struct { return WebApiURL.init(allocator, self.uri); } }; + +test "Url resolve size" { + const base = "https://www.lightpande.io"; + const url = try URL.parse(base, null); + + var url_string: [511]u8 = undefined; // Currently this is the largest url we support, it is however recommmended to at least support 2000 characters + @memset(&url_string, 'a'); + + var buf: [2048]u8 = undefined; // This is approximately the required size to support the current largest supported URL + var fba = std.heap.FixedBufferAllocator.init(&buf); + const out_url = try url.resolve(fba.allocator(), &url_string); + + try std.testing.expectEqualStrings(out_url.raw[0..25], base); + try std.testing.expectEqual(out_url.raw[25], '/'); + try std.testing.expectEqualStrings(out_url.raw[26..], &url_string); +}