[asterisk-commits] mjordan: branch 11 r377319 - /branches/11/main/manager.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Thu Dec 6 08:11:24 CST 2012
Author: mjordan
Date: Thu Dec 6 08:11:21 2012
New Revision: 377319
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=377319
Log:
Fix memory leak in 'manager show event' when command entered incorrectly
When the CLI command 'manager show event' was run incorrectly and its usage
instructions returned, a reference to the event container was leaked. This
would prevent the container from being reclaimed when Asterisk exits. We now
properly decrement the count on the ao2 object using the nifty RAII_VAR macro.
Thanks to Russell for helping me stumble on this, and Terry for writing that
ridiculously helpful macro.
Modified:
branches/11/main/manager.c
Modified: branches/11/main/manager.c
URL: http://svnview.digium.com/svn/asterisk/branches/11/main/manager.c?view=diff&rev=377319&r1=377318&r2=377319
==============================================================================
--- branches/11/main/manager.c (original)
+++ branches/11/main/manager.c Thu Dec 6 08:11:21 2012
@@ -7117,7 +7117,7 @@
static char *handle_manager_show_event(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
- struct ao2_container *events;
+ RAII_VAR(struct ao2_container *, events, NULL, ao2_cleanup);
struct ao2_iterator it_events;
struct ast_xml_doc_item *item, *temp;
int length;
@@ -7152,7 +7152,6 @@
ao2_ref(item, -1);
}
ao2_iterator_destroy(&it_events);
- ao2_ref(events, -1);
return match;
}
@@ -7162,7 +7161,6 @@
if (!(item = ao2_find(events, a->argv[3], OBJ_KEY))) {
ast_cli(a->fd, "Could not find event '%s'\n", a->argv[3]);
- ao2_ref(events, -1);
return CLI_SUCCESS;
}
@@ -7202,7 +7200,6 @@
}
ao2_ref(item, -1);
- ao2_ref(events, -1);
return CLI_SUCCESS;
}
More information about the asterisk-commits
mailing list