Work around a memory corruption issue on unload

I'm really not sure what is happening here, and it might just be a
winelib thing.
This commit is contained in:
Robbert van der Helm
2020-05-26 17:09:09 +02:00
parent fc35b6c9c8
commit 0c047f9a66
2 changed files with 18 additions and 7 deletions
+12 -3
View File
@@ -165,10 +165,19 @@ class Vst2Bridge {
/**
* The shared library handle of the VST plugin. I sadly could not get
* Boost.DLL to work here, so we'll just load the VST plugisn by hand.
* Boost.DLL to work here, so we'll just load the VST plugins by hand.
*
* FIXME: I don't know why, but `FreeLibrary()` seems to corrupt memory.
* This leads to a lot of weird behavior, such as plugins crashing as
* soon as other plugins get loaded or calls to `LoadLibrary()`
* returning null pointers while they would otherwise load fine
* without the prior call to `FreeLibrary`. We are leaking memory
* here until this is fixed, but it should not be a huge issue since
* this leak only exists for plugin groups.
*/
std::unique_ptr<std::remove_pointer_t<HMODULE>, decltype(&FreeLibrary)>
plugin_handle;
// std::unique_ptr<std::remove_pointer_t<HMODULE>, decltype(&FreeLibrary)>
// plugin_handle;
HMODULE plugin_handle;
/**
* The loaded plugin's `AEffect` struct, obtained using the above library