summaryrefslogtreecommitdiffstats
path: root/audio/audio_hw.c
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2012-05-02 11:24:19 -0700
committerEric Laurent <elaurent@google.com>2012-05-02 11:24:19 -0700
commit079bd66e0f13371cce8693e8ea79d5a75be02942 (patch)
tree57e687613b9f9b053ea8554b5988bcc674d9a8b5 /audio/audio_hw.c
parent1a42aa130cce5fd99e244d111a97d120b01e386b (diff)
downloaddevice_samsung_tuna-079bd66e0f13371cce8693e8ea79d5a75be02942.zip
device_samsung_tuna-079bd66e0f13371cce8693e8ea79d5a75be02942.tar.gz
device_samsung_tuna-079bd66e0f13371cce8693e8ea79d5a75be02942.tar.bz2
audio: fix memory leak.
Fixed memory leak introduced by commit 4e7a573f in case of error in adev_open_output_stream(). Change-Id: I4acc070d748cea228da846f95c7826160e0196a5
Diffstat (limited to 'audio/audio_hw.c')
-rw-r--r--audio/audio_hw.c12
1 files changed, 8 insertions, 4 deletions
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;