summaryrefslogtreecommitdiff
path: root/channels/chan_dahdi.c
diff options
context:
space:
mode:
authorJonathan Rose <jrose@digium.com>2013-10-24 17:00:27 +0000
committerJonathan Rose <jrose@digium.com>2013-10-24 17:00:27 +0000
commit4ca0f222e85554e24d5cfb7d48b3a774d96a6e45 (patch)
tree411b1a8a88241acde89163243e464edce21486d4 /channels/chan_dahdi.c
parentbeb5cdbef54908cc1564539f9cfb8852b530f2bc (diff)
memory leaks: Memory leak cleanup patch by Corey Farrell (second set)
Also covers ast_app_parse_timelen-fail-zero-length.patch, but the patch was replaced with one of my own. (issue ASTERISK-22467) Reported by: Corey Farrell Patches: chan_dahdi-cleanup_push.patch uploaded by coreyfarrell (license 5909) clicompat-r2.patch uploaded by coreyfarrell (license 5909) codecs-ilbc-doCPLC.patch uploaded by coreyfarrell (license 5909) data-cleanup-test-registration.patch uploaded by coreyfarrell (license 5909) main-asterisk-kill-listener.patch uploaded by coreyfarrell (license 5909) ........ Merged revisions 401704 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 401705 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 401706 from http://svn.asterisk.org/svn/asterisk/branches/12 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@401707 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/chan_dahdi.c')
-rw-r--r--channels/chan_dahdi.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c
index cc82f156f..b68299478 100644
--- a/channels/chan_dahdi.c
+++ b/channels/chan_dahdi.c
@@ -11155,6 +11155,11 @@ static struct dahdi_pvt *handle_init_event(struct dahdi_pvt *i, int event)
return NULL;
}
+static void monitor_pfds_clean(void *arg) {
+ struct pollfd **pfds = arg;
+ ast_free(*pfds);
+}
+
static void *do_monitor(void *data)
{
int count, res, res2, spoint, pollres=0;
@@ -11178,6 +11183,7 @@ static void *do_monitor(void *data)
#endif
pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL);
+ pthread_cleanup_push(monitor_pfds_clean, &pfds);
for (;;) {
/* Lock the interface list */
ast_mutex_lock(&iflock);
@@ -11433,6 +11439,7 @@ static void *do_monitor(void *data)
ast_mutex_unlock(&iflock);
}
/* Never reached */
+ pthread_cleanup_pop(1);
return NULL;
}