If the CONFBRIDGE function is used to dynamically set
menu options, a memory leak occurs when a menu option
that has been set is overridden, since the menu entry
is not destroyed before being freed. This ensures that
it is.
Additionally, logic that duplicates the destroy function
is removed in lieu of the destroy function itself.
ASTERISK-28422 #close
Change-Id: I71cfb5c24e636984d41086d1333a416dc12ff995
/* if adding any of the actions failed, bail */
if (res) {
- struct conf_menu_action *menu_action;
- while ((menu_action = AST_LIST_REMOVE_HEAD(&menu_entry->actions, action))) {
- ast_free(menu_action);
- }
+ conf_menu_entry_destroy(menu_entry);
ast_free(menu_entry);
return -1;
}
AST_LIST_TRAVERSE_SAFE_BEGIN(&menu->entries, cur, entry) {
if (!strcasecmp(cur->dtmf, menu_entry->dtmf)) {
AST_LIST_REMOVE_CURRENT(entry);
+ conf_menu_entry_destroy(cur);
ast_free(cur);
break;
}