X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2FChanUser.c;h=d683e22bd83e88c1468412fd2ff4e42e64f6e550;hb=c575e458c6257e75b97884847143b20965a5dfda;hp=800f1fc22a860581d1e19418c4a0bf296d56d56c;hpb=2d9db1adb1946aba00b203f40eff7d5db8163f01;p=NeonServV5.git diff --git a/src/ChanUser.c b/src/ChanUser.c index 800f1fc..d683e22 100644 --- a/src/ChanUser.c +++ b/src/ChanUser.c @@ -1,4 +1,4 @@ -/* ChanUser.c - NeonServ v5.1 +/* ChanUser.c - NeonServ v5.2 * Copyright (C) 2011 Philipp Kreil (pk910) * * This program is free software: you can redistribute it and/or modify @@ -31,6 +31,7 @@ struct ChanUser* addChanUser(struct ChanNode *chan, struct UserNode *user) { chanuser->chan = chan; chanuser->changeTime = 0; + chanuser->spamnode = NULL; chanuser->next_user = chan->user; chan->user = chanuser; @@ -54,6 +55,7 @@ struct ChanUser* addInvisibleChanUser(struct ChanNode *chan, struct UserNode *us chanuser->chan = chan; chanuser->changeTime = 0; + chanuser->spamnode = NULL; chanuser->next_user = chan->user; chan->user = chanuser; @@ -94,7 +96,7 @@ struct ChanUser* getUserChannels(struct UserNode *user, struct ChanUser *last) { return last->next_chan; } -void delChanUser(struct ChanUser *chanuser, int freeChanUser) { +void delChanUser(struct ChanUser *chanuser, int do_freeChanUser) { struct ChanUser *cchanuser, *last; //remove it from the user's channel-list if(!(chanuser->flags & CHANUSERFLAG_INVISIBLE)) { @@ -125,15 +127,15 @@ void delChanUser(struct ChanUser *chanuser, int freeChanUser) { last = cchanuser; } - if(freeChanUser) - free(chanuser); - else { + if(do_freeChanUser) { + freeChanUser(chanuser); + } else { chanuser->next_chan = NULL; chanuser->next_user = NULL; } } -void removeChanUserFromLists(struct ChanUser *chanuser, int remove_from_userlist, int remove_from_channellist, int freeChanUser) { +void removeChanUserFromLists(struct ChanUser *chanuser, int remove_from_userlist, int remove_from_channellist, int do_freeChanUser) { struct ChanUser *cchanuser, *last; if(remove_from_userlist) { //remove it from the channel's user-list @@ -167,7 +169,14 @@ void removeChanUserFromLists(struct ChanUser *chanuser, int remove_from_userlist chanuser->next_chan = NULL; } - if(freeChanUser) - free(chanuser); + if(do_freeChanUser) { + freeChanUser(chanuser); + } +} + +void freeChanUser(struct ChanUser *chanuser) { + if(chanuser->spamnode) + free(chanuser->spamnode); + free(chanuser); }