summaryrefslogtreecommitdiff
path: root/apps/app_meetme.c
diff options
context:
space:
mode:
authorMark Spencer <markster@digium.com>2004-06-17 04:42:03 +0000
committerMark Spencer <markster@digium.com>2004-06-17 04:42:03 +0000
commit4f72a1da7727cb5ea0a4ddef8853f913304ad169 (patch)
treeae7078c4890f149bff1252e7c637ece3981d113d /apps/app_meetme.c
parent095b971fc603393214cca8e7ec1fc126ff151105 (diff)
Fix doubly-linked list delete
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3234 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'apps/app_meetme.c')
-rwxr-xr-xapps/app_meetme.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/apps/app_meetme.c b/apps/app_meetme.c
index 57cb46f01..9b513661a 100755
--- a/apps/app_meetme.c
+++ b/apps/app_meetme.c
@@ -938,14 +938,30 @@ outrun:
} else {
/* Remove the user struct */
if (user == conf->firstuser) {
- user->nextuser->prevuser = NULL;
+ if (user->nextuser) {
+ /* There is another entry */
+ user->nextuser->prevuser = NULL;
+ } else {
+ /* We are the only entry */
+ conf->lastuser = NULL;
+ }
+ /* In either case */
conf->firstuser = user->nextuser;
} else if (user == conf->lastuser){
- user->prevuser->nextuser = NULL;
+ if (user->prevuser)
+ user->prevuser->nextuser = NULL;
+ else
+ ast_log(LOG_ERROR, "Bad bad bad! We're the last, not the first, but nobody before us??\n");
conf->lastuser = user->prevuser;
} else {
- user->nextuser->prevuser = user->prevuser;
- user->prevuser->nextuser = user->nextuser;
+ if (user->nextuser)
+ user->nextuser->prevuser = user->prevuser;
+ else
+ ast_log(LOG_ERROR, "Bad! Bad! Bad! user->nextuser is NULL but we're not the end!\n");
+ if (user->prevuser)
+ user->prevuser->nextuser = user->nextuser;
+ else
+ ast_log(LOG_ERROR, "Bad! Bad! Bad! user->prevuser is NULL but we're not the beginning!\n");
}
/* Return the number of seconds the user was in the conf */
sprintf(meetmesecs, "%i", (int) (user->jointime - time(NULL)));