From b888b6bf234ff6fd602f434a88f0f27e8930de5f Mon Sep 17 00:00:00 2001 From: Richard Mudgett Date: Tue, 8 May 2012 22:25:42 +0000 Subject: [PATCH] Make FollowMe findmeexec() put the list head on the stack instead of mallocing it. Why this tiny struct was malloced instead of the 28k struct in the last change is beyond me. Just doing my part to help stamp out sillyness. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@365766 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- apps/app_followme.c | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/apps/app_followme.c b/apps/app_followme.c index 7e14ffcf96..c23e2a3287 100644 --- a/apps/app_followme.c +++ b/apps/app_followme.c @@ -906,14 +906,7 @@ static struct ast_channel *findmeexec(struct fm_args *tpargs, struct ast_channel char *rest, *number; struct findme_user *tmpuser; struct findme_user *fmuser; - struct findme_user_listptr *findme_user_list; - - findme_user_list = ast_calloc(1, sizeof(*findme_user_list)); - if (!findme_user_list) { - ast_log(LOG_WARNING, "Failed to allocate memory for findme_user_list\n"); - return NULL; - } - AST_LIST_HEAD_INIT_NOLOCK(findme_user_list); + struct findme_user_listptr findme_user_list = AST_LIST_HEAD_NOLOCK_INIT_VALUE; for (idx = 1; !ast_check_hangup(caller); ++idx) { /* Find next followme numbers to dial. */ @@ -969,7 +962,7 @@ static struct ast_channel *findmeexec(struct fm_args *tpargs, struct ast_channel tmpuser->state = 0; tmpuser->cleared = 0; ast_copy_string(tmpuser->dialarg, dialarg, sizeof(dialarg)); - AST_LIST_INSERT_TAIL(findme_user_list, tmpuser, entry); + AST_LIST_INSERT_TAIL(&findme_user_list, tmpuser, entry); } else { ast_verb(3, "couldn't reach at this number.\n"); ast_channel_lock(outbound); @@ -1002,17 +995,17 @@ static struct ast_channel *findmeexec(struct fm_args *tpargs, struct ast_channel } } - if (AST_LIST_EMPTY(findme_user_list)) { + if (AST_LIST_EMPTY(&findme_user_list)) { continue; } - winner = wait_for_winner(findme_user_list, nm, caller, tpargs->namerecloc, tpargs); + winner = wait_for_winner(&findme_user_list, nm, caller, tpargs->namerecloc, tpargs); if (!winner) { continue; } /* Destroy losing calls up to the winner. The rest will be destroyed later. */ - while ((fmuser = AST_LIST_REMOVE_HEAD(findme_user_list, entry))) { + while ((fmuser = AST_LIST_REMOVE_HEAD(&findme_user_list, entry))) { if (fmuser->ochan == winner) { /* Pass any connected line info up. */ tpargs->connected_out = fmuser->connected; @@ -1030,7 +1023,7 @@ static struct ast_channel *findmeexec(struct fm_args *tpargs, struct ast_channel } break; } - destroy_calling_tree(findme_user_list); + destroy_calling_tree(&findme_user_list); return winner; }