JUCE
JUCE copied to clipboard
Fix crash after MessageManager deleted/recreated
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.