From: pk910 Date: Tue, 4 Oct 2011 16:15:33 +0000 (+0200) Subject: fixed a core bug (user got lost in the channel userlist on nick change) X-Git-Tag: v5.3~325 X-Git-Url: http://git.pk910.de/?a=commitdiff_plain;ds=sidebyside;h=f5833e2b4ad6b20e063dce2c502c399fa7b7400b;p=NeonServV5.git fixed a core bug (user got lost in the channel userlist on nick change) --- diff --git a/src/UserNode.c b/src/UserNode.c index f23548b..7263679 100644 --- a/src/UserNode.c +++ b/src/UserNode.c @@ -294,8 +294,23 @@ int renameUser(struct UserNode* user, const char *new_nick) { strcpy(user->nick, new_nick); return 1; } - int userListIndex = get_nicklist_entry(*new_nick); - delUser(user, 0); + //delUser(user, 0); //EPIC FAIL! This deletes the user from the channel Userlist -.- + //manually remove the user from the old userList + int userListIndex = get_nicklist_entry(user->nick[0]); + if(userListIndex != -1) { + struct UserNode *cuser, *last_user = NULL; + for(cuser = userList[userListIndex]; cuser; cuser = cuser->next) { + if(cuser == user) { + if(last_user) + last_user->next = user->next; + else + userList[userListIndex] = user->next; + break; + } else + last_user = cuser; + } + } + userListIndex = get_nicklist_entry(*new_nick); strcpy(user->nick, new_nick); user->next = userList[userListIndex]; userList[userListIndex] = user;