46 lines
1.1 KiB
Diff
46 lines
1.1 KiB
Diff
|
From 516569bbba7eb0e03f2892a67d8559c4d0bcd17a Mon Sep 17 00:00:00 2001
|
||
|
From: Baek Chang <breakchange@gmail.com>
|
||
|
Date: Tue, 3 May 2011 10:52:34 -0700
|
||
|
Subject: [PATCH 18/23] UCM: fix memory leak when executing cset commands
|
||
|
|
||
|
fix memory leak when executing cset commands.
|
||
|
snd_ctl_elem's are allocated, but never free'ed
|
||
|
|
||
|
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||
|
---
|
||
|
src/ucm/main.c | 11 ++++++++++-
|
||
|
1 files changed, 10 insertions(+), 1 deletions(-)
|
||
|
|
||
|
diff --git a/src/ucm/main.c b/src/ucm/main.c
|
||
|
index 86f29e3..f8ceeeb 100644
|
||
|
--- a/src/ucm/main.c
|
||
|
+++ b/src/ucm/main.c
|
||
|
@@ -173,7 +173,8 @@ static int execute_cset(snd_ctl_t *ctl, char *cset)
|
||
|
pos = strrchr(cset, ' ');
|
||
|
if (pos == NULL) {
|
||
|
uc_error("undefined value for cset >%s<", cset);
|
||
|
- return -EINVAL;
|
||
|
+ err = -EINVAL;
|
||
|
+ goto __fail;
|
||
|
}
|
||
|
*pos = '\0';
|
||
|
err = snd_ctl_ascii_elem_id_parse(id, cset);
|
||
|
@@ -196,6 +197,14 @@ static int execute_cset(snd_ctl_t *ctl, char *cset)
|
||
|
err = 0;
|
||
|
__fail:
|
||
|
*pos = ' ';
|
||
|
+
|
||
|
+ if (id != NULL)
|
||
|
+ free(id);
|
||
|
+ if (value != NULL)
|
||
|
+ free(value);
|
||
|
+ if (info != NULL)
|
||
|
+ free(info);
|
||
|
+
|
||
|
return err;
|
||
|
}
|
||
|
|
||
|
--
|
||
|
1.7.5.3
|
||
|
|