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.
--
v2: mshtml: Traverse inner windows.
mshtml: Traverse variants using a helper function.
mshtml: Implement Cycle Collection for dispex without traversal.
mshtml: Implement Cycle Collection for outer windows.
mshtml: Use unlink and destructor in the vtbl for HTMLLocation.
mshtml: Separate the HTMLLocation from the outer window.
mshtml: Use unlink and destructor in the vtbl for PerformanceTiming.
mshtml: Move PerformanceTiming related fields to the window.
mshtml: Move PerformanceNavigation related fields to the window.
mshtml: Use ASCII strings for dispex object names.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3542
For example, currently, if --enable-archs=i386,x86_64 is used, and there is an
x86_64 cross compiler present but no i386 cross compiler, Wine will silently
remove i386 from the list of cross-compiled architechtures, and only compile
PE code for x86_64. This seems quite undesirable.
I am not aware of any practical reason for this to happen. Debian does ship
i686 and x86_64 MinGW compilers in separate packages, though, so it is possible
in theory.
--
I noticed this while looking into a different, related issue.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3560
This MR fixes a bug in Far Cry 6 where the necessary objects cannot be initialized in its speech synthesis thread.
--
v2: sapi/tests: Increase timeout in tts test_spvoice.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3514