From aba91832cf4cc718af3f683225f8eb4f61ecb880 Mon Sep 17 00:00:00 2001 From: "U-MARTIN-29BA21DE\\Martin" Date: Tue, 20 Jan 2009 00:09:58 +0000 Subject: [PATCH] Fixes crashes on some plugins upon unloadPlugin(). Nulls out effect->resvd1. Apparently some plugins are checking this pointer and trying to free it themselves if it is not null. --- jvsthost2.dll | Bin 101104 -> 101104 bytes .../audioplugin/vst/vst2/JVstHost.cpp | 5 +++-- .../audioplugin/vst/vst2/JVstHost2.java | 5 +++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/jvsthost2.dll b/jvsthost2.dll index c09e3263533fa4e6c8c1e7694a497ce63647b23e..b6b12104fa13f35e77511fbe5126dc5050cb0fc2 100755 GIT binary patch delta 10225 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 G&;Bvti != 0) { free(hostVars->vti); } + free(hostVars); + effect->resvd1 = NULL; // close the plugin effect->dispatcher (effect, effClose, 0, 0, 0, 0); - + // close the library from which the plugin was loaded if (libPtr != 0) { #if _WIN32 diff --git a/src/com/synthbot/audioplugin/vst/vst2/JVstHost2.java b/src/com/synthbot/audioplugin/vst/vst2/JVstHost2.java index b43d11e..cb57b32 100644 --- a/src/com/synthbot/audioplugin/vst/vst2/JVstHost2.java +++ b/src/com/synthbot/audioplugin/vst/vst2/JVstHost2.java @@ -134,6 +134,11 @@ protected synchronized void finalize() throws Throwable { System.loadLibrary("jvsthost2"); } + @Override + public String toString() { + return getEffectName() + "@0x" + Long.toHexString(vstPluginPtr); + } + /** * Indicates if the native component of the plugin is loaded. Any use of the * JVstHost2 object while the plugin is not loaded will throw an IllegalStateException.