Browse Source

VST3: Fixed a memory leak

tags/2021-05-28
Tom Poole 6 years ago
parent
commit
e821dd9b8e
1 changed files with 6 additions and 7 deletions
  1. +6
    -7
      modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp

+ 6
- 7
modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp View File

@@ -2296,7 +2296,7 @@ public:
if (head != nullptr)
{
ComSmartPtr<Steinberg::MemoryStream> 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<Steinberg::MemoryStream> 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<Steinberg::MemoryStream> 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<Steinberg::MemoryStream> stream (new Steinberg::MemoryStream(), false);
stream->setSize ((TSize) mem.getSize());
mem.copyTo (stream->getData(), 0, mem.getSize());
return stream;
}
}
return stream;
return nullptr;
}
ComSmartPtr<ParamValueQueueList> inputParameterChanges, outputParameterChanges;


Loading…
Cancel
Save