From 079bd66e0f13371cce8693e8ea79d5a75be02942 Mon Sep 17 00:00:00 2001 From: Eric Laurent Date: Wed, 2 May 2012 11:24:19 -0700 Subject: audio: fix memory leak. Fixed memory leak introduced by commit 4e7a573f in case of error in adev_open_output_stream(). Change-Id: I4acc070d748cea228da846f95c7826160e0196a5 --- audio/audio_hw.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'audio') diff --git a/audio/audio_hw.c b/audio/audio_hw.c index 7a24bcf..b507a59 100644 --- a/audio/audio_hw.c +++ b/audio/audio_hw.c @@ -2899,16 +2899,20 @@ static int adev_open_output_stream(struct audio_hw_device *dev, if (flags & AUDIO_OUTPUT_FLAG_DEEP_BUFFER) { ALOGV("adev_open_output_stream() deep buffer"); - if (ladev->outputs[OUTPUT_DEEP_BUF] != NULL) - return -ENOSYS; + if (ladev->outputs[OUTPUT_DEEP_BUF] != NULL) { + ret = -ENOSYS; + goto err_open; + } output_type = OUTPUT_DEEP_BUF; out->stream.common.get_buffer_size = out_get_buffer_size_deep_buffer; out->stream.get_latency = out_get_latency_deep_buffer; out->stream.write = out_write_deep_buffer; } else { ALOGV("adev_open_output_stream() normal buffer"); - if (ladev->outputs[OUTPUT_LOW_LATENCY] != NULL) - return -ENOSYS; + if (ladev->outputs[OUTPUT_LOW_LATENCY] != NULL) { + ret = -ENOSYS; + goto err_open; + } output_type = OUTPUT_LOW_LATENCY; out->stream.common.get_buffer_size = out_get_buffer_size_low_latency; out->stream.get_latency = out_get_latency_low_latency; -- cgit v1.1