From 346aa7d839230a578135478c776529e6e6c2ee86 Mon Sep 17 00:00:00 2001 From: Alex Szpakowski Date: Thu, 4 Sep 2014 13:33:18 -0300 Subject: [PATCH] Fixed a memory leak in Sources created from SoundData. --- src/modules/audio/openal/Source.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/modules/audio/openal/Source.cpp b/src/modules/audio/openal/Source.cpp index 20d2daf09..1415048e4 100644 --- a/src/modules/audio/openal/Source.cpp +++ b/src/modules/audio/openal/Source.cpp @@ -68,7 +68,10 @@ Source::Source(Pool *pool, love::sound::SoundData *soundData) , toLoop(0) { ALenum fmt = getFormat(soundData->getChannels(), soundData->getBitDepth()); - staticBuffer = new StaticDataBuffer(fmt, soundData->getData(), soundData->getSize(), soundData->getSampleRate()); + staticBuffer.set(new StaticDataBuffer(fmt, soundData->getData(), soundData->getSize(), soundData->getSampleRate())); + + // The buffer has a +2 retain count right now, but we want it to have +1. + staticBuffer->release(); float z[3] = {0, 0, 0};