Commit 3b2328a8 authored by Jaroslav Kysela's avatar Jaroslav Kysela

ALSA CVS update

PCM Midlevel
fix memory leak
Signed-off-by: default avatarClemens Ladisch <clemens@ladisch.de>
parent 9c712fbc
...@@ -887,22 +887,18 @@ int snd_pcm_hw_rule_add(snd_pcm_runtime_t *runtime, unsigned int cond, ...@@ -887,22 +887,18 @@ int snd_pcm_hw_rule_add(snd_pcm_runtime_t *runtime, unsigned int cond,
va_list args; va_list args;
va_start(args, dep); va_start(args, dep);
if (constrs->rules_num >= constrs->rules_all) { if (constrs->rules_num >= constrs->rules_all) {
snd_pcm_hw_rule_t *old = constrs->rules; snd_pcm_hw_rule_t *new;
if (constrs->rules_all == 0) unsigned int new_rules = constrs->rules_all + 16;
constrs->rules_all = 32; new = kcalloc(new_rules, sizeof(*c), GFP_KERNEL);
else { if (!new)
old = constrs->rules;
constrs->rules_all += 10;
}
constrs->rules = kcalloc(constrs->rules_all, sizeof(*c),
GFP_KERNEL);
if (!constrs->rules)
return -ENOMEM; return -ENOMEM;
if (old) { if (constrs->rules) {
memcpy(constrs->rules, old, memcpy(new, constrs->rules,
constrs->rules_num * sizeof(*c)); constrs->rules_num * sizeof(*c));
kfree(old); kfree(constrs->rules);
} }
constrs->rules = new;
constrs->rules_all = new_rules;
} }
c = &constrs->rules[constrs->rules_num]; c = &constrs->rules[constrs->rules_num];
c->cond = cond; c->cond = cond;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment