diff --git a/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp b/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp index 2df8daca26..fe85de9fa6 100644 --- a/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp +++ b/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp @@ -1051,7 +1051,8 @@ public: Timer::callPendingTimersSynchronously(); for (int i = ComponentPeer::getNumPeers(); --i >= 0;) - ComponentPeer::getPeer (i)->performAnyPendingRepaintsNow(); + if (ComponentPeer* p = ComponentPeer::getPeer(i)) + p->performAnyPendingRepaintsNow(); recursionCheck = false; } diff --git a/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp b/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp index ba1aa1433c..2fe09bde3c 100644 --- a/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp +++ b/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp @@ -1655,7 +1655,6 @@ public: if (isControllerInitialised) editController->terminate(); if (isComponentInitialised) component->terminate(); - //Deletion order appears to matter: componentConnection = nullptr; editControllerConnection = nullptr; unitData = nullptr; @@ -1667,6 +1666,8 @@ public: editController2 = nullptr; editController = nullptr; component = nullptr; + host = nullptr; + module = nullptr; } bool initialise() diff --git a/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp b/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp index d56536321d..458d59bb6d 100644 --- a/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp +++ b/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp @@ -1285,7 +1285,8 @@ public: handleUpdateNowIfNeeded(); for (int i = ComponentPeer::getNumPeers(); --i >= 0;) - ComponentPeer::getPeer(i)->performAnyPendingRepaintsNow(); + if (ComponentPeer* p = ComponentPeer::getPeer(i)) + p->performAnyPendingRepaintsNow(); } break;