From: Richard Mudgett Date: Tue, 8 May 2012 22:25:42 +0000 (+0000) Subject: Make FollowMe findmeexec() put the list head on the stack instead of mallocing it. X-Git-Tag: 11.0.0-beta1~339 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b888b6bf234ff6fd602f434a88f0f27e8930de5f;p=thirdparty%2Fasterisk.git 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 --- 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; }