From e821dd9b8efdf89609ab938eec93abf85992217d Mon Sep 17 00:00:00 2001 From: Tom Poole Date: Mon, 25 Mar 2019 17:22:35 +0000 Subject: [PATCH] VST3: Fixed a memory leak --- .../format_types/juce_VST3PluginFormat.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp b/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp index ebe7c36003..c717cbf6f0 100644 --- a/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp +++ b/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp @@ -2296,7 +2296,7 @@ public: if (head != nullptr) { - ComSmartPtr componentStream (createMemoryStreamForState (*head, "IComponent")); + auto componentStream (createMemoryStreamForState (*head, "IComponent")); if (componentStream != nullptr && holder->component != nullptr) holder->component->setState (componentStream); @@ -2310,7 +2310,7 @@ public: editController->setComponentState (componentStream); } - ComSmartPtr controllerStream = createMemoryStreamForState (*head, "IEditController"); + auto controllerStream (createMemoryStreamForState (*head, "IEditController")); if (controllerStream != nullptr) editController->setState (controllerStream); @@ -2515,23 +2515,22 @@ private: } } - static Steinberg::MemoryStream* createMemoryStreamForState (XmlElement& head, StringRef identifier) + static ComSmartPtr createMemoryStreamForState (XmlElement& head, StringRef identifier) { - Steinberg::MemoryStream* stream = nullptr; - if (auto* state = head.getChildByName (identifier)) { MemoryBlock mem; if (mem.fromBase64Encoding (state->getAllSubText())) { - stream = new Steinberg::MemoryStream(); + ComSmartPtr stream (new Steinberg::MemoryStream(), false); stream->setSize ((TSize) mem.getSize()); mem.copyTo (stream->getData(), 0, mem.getSize()); + return stream; } } - return stream; + return nullptr; } ComSmartPtr inputParameterChanges, outputParameterChanges;