JUCE icon indicating copy to clipboard operation
JUCE copied to clipboard

Fix crash after MessageManager deleted/recreated

Open emezeske opened this issue 1 year ago • 0 comments

If the MessageManager is deleted (via e.g. deleteInstance()) and then re-created in the same process, the next time that a top-level window is created, the process will crash because the JuceIVirtualDesktopManager COM object pointer is cached in a static variable, and the MessageManager deconstructor calls OleUninitialize() which shuts down COM, thereby invalidating the static cached pointer.

There's no reason to cache this anyway, as CoCreateInstance() returns a singleton, and this is not performance-sensitive code in a tight loop or something.

I found this bug because in my unit testing, I create and destroy the message manager for each test to ensure that the tests are hermetic. With this fix in place it works perfectly.

Thank you for submitting a pull request.

Please make sure you have read and followed our contribution guidelines (.github/contributing.md in this repository). Your pull request will not be accepted if you have not followed the instructions.

emezeske avatar Mar 29 '24 20:03 emezeske