diff options
author | mmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-09-09 10:25:06 +0000 |
---|---|---|
committer | mmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-09-09 10:25:06 +0000 |
commit | fd94aeaf01aa591674e721aed6c98166947d2561 (patch) | |
tree | d7b1a83459ededcb1a07ca607e074e5e2e3f2dc6 | |
parent | 099bfd0f0014ab8f7c79d42d1e1c65850a2ce518 (diff) |
Merged revisions 141995 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk
........
r141995 | mmichelson | 2008-09-09 05:20:58 -0500 (Tue, 09 Sep 2008) | 8 lines
Fix a memory leak in chan_oss
(closes issue #13311)
Reported by: eliel
Patches:
chan_oss.c.patch uploaded by eliel (license 64)
........
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.1@141997 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r-- | channels/chan_oss.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/channels/chan_oss.c b/channels/chan_oss.c index a3908a504..b3c29c031 100644 --- a/channels/chan_oss.c +++ b/channels/chan_oss.c @@ -1464,18 +1464,22 @@ static int load_module(void) static int unload_module(void) { - struct chan_oss_pvt *o; + struct chan_oss_pvt *o, *next; ast_channel_unregister(&oss_tech); ast_cli_unregister_multiple(cli_oss, sizeof(cli_oss) / sizeof(struct ast_cli_entry)); - for (o = oss_default.next; o; o = o->next) { + o = oss_default.next; + while (o) { close(o->sounddev); if (o->owner) ast_softhangup(o->owner, AST_SOFTHANGUP_APPUNLOAD); if (o->owner) /* XXX how ??? */ return -1; - /* XXX what about the memory allocated ? */ + next = o->next; + ast_free(o->name); + ast_free(o); + o = next; } return 0; } |