1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

InAppPurchasesDemo: Avoid heap-use-after-free when rapidly playing samples

This commit is contained in:
reuk 2021-12-07 13:28:50 +00:00
parent 48c6087faf
commit 7984458a8e

View file

@ -480,6 +480,8 @@ class InAppPurchasesDemo : public Component,
public:
InAppPurchasesDemo()
{
manager.registerBasicFormats();
Desktop::getInstance().getDefaultLookAndFeel().setUsingNativeAlertWindows (true);
dm.addAudioCallback (&player);
@ -568,12 +570,8 @@ private:
auto assetName = "Purchases/" + soundNames[idx] + String (phraseListBox.getSelectedRow()) + ".ogg";
if (auto fileStream = createAssetInputStream (assetName.toRawUTF8()))
{
currentPhraseData.reset();
fileStream->readIntoMemoryBlock (currentPhraseData);
player.play (currentPhraseData.getData(), currentPhraseData.getSize());
}
if (auto* reader = manager.createReaderFor (std::move (fileStream)))
player.play (reader, true);
}
}
@ -593,7 +591,7 @@ private:
ListBox voiceListBox { "voiceListBox" };
std::unique_ptr<VoiceModel> voiceModel { new VoiceModel (purchases) };
MemoryBlock currentPhraseData;
AudioFormatManager manager;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (InAppPurchasesDemo)
};