The first few patches will introduce temporary leaks or cyclic refs, but that's because we'll handle them properly with the dispex CC, and the last patch should fix this. Other objects' traversal will follow in another MR.
EDIT: This now does more prep work and converts nodes to use the dispex CC, using temporary helpers, without any other object or temporary leaks yet.
--
v4: mshtml: Release the event target during node unlink.
mshtml: Implement node cycle collection using the dispex.
mshtml: Move ccref from the node to the dispex.
mshtml: Rename EventTarget_QI to EventTarget_QI_no_cc.
mshtml: Rename dispex_query_interface to dispex_query_interface_no_cc.
mshtml: Use designated initializers in node vtables.
mshtml: Use designated initializers in dispex and event target vtables.
mshtml: Make all event target vtbls const.
mshtml: Split IUnknown methods for outer windows into separate vtable.
mshtml: Move console to the inner window.
mshtml: Use ASCII strings for dispex object names.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3542
On Wed Apr 12 05:47:11 2023 +0000, Yeshun Ye wrote:
> Yes, I'm fixing a bug of an application, not implementing the set of
> Endpoint Volume API.
> Do I really need to write some tests?
Well, it's important. We can't risk setting the wrong volume and potentially ruining physical audio equipment (and eardrums).
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2565#note_42399