dect
/
asterisk
Archived
13
0
Fork 0

Fix doubly-linked list delete

git-svn-id: http://svn.digium.com/svn/asterisk/trunk@3234 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
markster 2004-06-17 04:42:03 +00:00
parent 61bb6325b7
commit b2db3590c2
1 changed files with 20 additions and 4 deletions

View File

@ -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)));