From 35da652a5de0615984e445187fe0ed3ab67f0f24 Mon Sep 17 00:00:00 2001 From: axl Date: Sun, 7 Dec 2025 21:30:04 -0300 Subject: [PATCH 1/2] fix: initialize event target --- src/browser/dom/event_target.zig | 1 + 1 file changed, 1 insertion(+) diff --git a/src/browser/dom/event_target.zig b/src/browser/dom/event_target.zig index 32d7a14ff..ace6ca579 100644 --- a/src/browser/dom/event_target.zig +++ b/src/browser/dom/event_target.zig @@ -95,6 +95,7 @@ pub const EventTarget = struct { // -------- pub fn constructor(page: *Page) !*parser.EventTarget { const et = try page.arena.create(EventTarget); + et.* = .{}; return @ptrCast(&et.base); } From 1927a16089aabf7f06ffc8960eaf967597595a57 Mon Sep 17 00:00:00 2001 From: axl Date: Sun, 7 Dec 2025 21:37:24 -0300 Subject: [PATCH 2/2] feat: test for event target --- src/tests/dom/event_target.html | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/tests/dom/event_target.html b/src/tests/dom/event_target.html index 68fb8c6b1..e15c0991f 100644 --- a/src/tests/dom/event_target.html +++ b/src/tests/dom/event_target.html @@ -113,4 +113,13 @@ // doesn't crash on null receiver content.addEventListener('he2', null); content.dispatchEvent(new Event('he2')); + + // Test that EventTarget constructor properly initializes vtable + const et = new EventTarget(); + testing.expectEqual('[object EventTarget]', et.toString()); + + let constructorTestCalled = false; + et.addEventListener('test', () => { constructorTestCalled = true; }); + et.dispatchEvent(new Event('test')); + testing.expectEqual(true, constructorTestCalled);