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) if (head != nullptr)
{ {
ComSmartPtr<Steinberg::MemoryStream> componentStream (createMemoryStreamForState (*head, "IComponent"));
auto componentStream (createMemoryStreamForState (*head, "IComponent"));
if (componentStream != nullptr && holder->component != nullptr) if (componentStream != nullptr && holder->component != nullptr)
holder->component->setState (componentStream); holder->component->setState (componentStream);
@@ -2310,7 +2310,7 @@ public:
editController->setComponentState (componentStream); editController->setComponentState (componentStream);
} }
ComSmartPtr<Steinberg::MemoryStream> controllerStream = createMemoryStreamForState (*head, "IEditController");
auto controllerStream (createMemoryStreamForState (*head, "IEditController"));
if (controllerStream != nullptr) if (controllerStream != nullptr)
editController->setState (controllerStream); 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)) if (auto* state = head.getChildByName (identifier))
{ {
MemoryBlock mem; MemoryBlock mem;
if (mem.fromBase64Encoding (state->getAllSubText())) if (mem.fromBase64Encoding (state->getAllSubText()))
{ {
stream = new Steinberg::MemoryStream();
ComSmartPtr<Steinberg::MemoryStream> stream (new Steinberg::MemoryStream(), false);
stream->setSize ((TSize) mem.getSize()); stream->setSize ((TSize) mem.getSize());
mem.copyTo (stream->getData(), 0, mem.getSize()); mem.copyTo (stream->getData(), 0, mem.getSize());
return stream;
} }
} }
return stream;
return nullptr;
} }
ComSmartPtr<ParamValueQueueList> inputParameterChanges, outputParameterChanges; ComSmartPtr<ParamValueQueueList> inputParameterChanges, outputParameterChanges;


Loading…
Cancel
Save