Skip to content

Commit 3a44c2f

Browse files
committed
Fix inputBuffer free
Non-interleaved support was added in f229c7b Previous to this commit, the default was interleaved, meaning there was only ever one mBuffers. With non-interleaved support, there are numberOfChannels mBuffers. The allocation of these buffers is shown in createInputBuffer wherein if (interleaved) { ... inputBuffer->mBuffers[0].mData = calloc(1, MAXFRAMES * 4 * numberOfChannels); ... } else { inputBuffer = (AudioBufferList *)malloc(offsetof(AudioBufferList, mBuffers[0]) + sizeof(AudioBuffer) * numberOfChannels); ... for (int n = 0; n < numberOfChannels; n++) { inputBuffer->mBuffers[n].mData = inputBufs[n] = (float *)calloc(1, MAXFRAMES * 4); ... } } Therefore when freeing inputBuffer, interleaved == true should free one mBuffers and interleaved == false should free numberOfChannels mBuffers.
1 parent c662ecf commit 3a44c2f

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

Superpowered/OpenSource/SuperpoweredIOSAudioIO.mm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,8 +181,8 @@ - (void)dealloc {
181181
AudioComponentInstanceDispose(audioUnit);
182182
};
183183
if (inputBuffer) {
184-
if (interleaved) for (int n = 0; n < numberOfChannels; n++) free(inputBuffer->mBuffers[n].mData);
185-
else free(inputBuffer->mBuffers[0].mData);
184+
if (interleaved) free(inputBuffer->mBuffers[0].mData);
185+
else for (int n = 0; n < numberOfChannels; n++) free(inputBuffer->mBuffers[n].mData);
186186
free(inputBuffer);
187187
};
188188
if (inputBufs) free(inputBufs);

0 commit comments

Comments
 (0)