X-Git-Url: https://jfr.im/git/irc/evilnet/x3.git/blobdiff_plain/2aef5f4b9017263e6890dc2f72969cc1dcc7b2b6..ec1a68c8a2703555659265994f30e8f9156af21c:/src/hash.c diff --git a/src/hash.c b/src/hash.c index 34f508a..9819c4a 100644 --- a/src/hash.c +++ b/src/hash.c @@ -148,7 +148,7 @@ ReintroduceUser(struct userNode *user) irc_join(user, mn->channel); if (mn->modes) { change.args[0].mode = mn->modes; - change.args[0].member = mn; + change.args[0].u.member = mn; mod_chanmode_announce(user, mn->channel, &change); } } @@ -225,7 +225,7 @@ call_account_func(struct userNode *user, const char *stamp) } void -StampUser(struct userNode *user, const char *stamp) +StampUser(struct userNode *user, const char *stamp, time_t timestamp) { #ifdef WITH_PROTOCOL_P10 /* The P10 protocol says we can't stamp users who already @@ -234,7 +234,7 @@ StampUser(struct userNode *user, const char *stamp) return; #endif - irc_account(user, stamp); + irc_account(user, stamp, timestamp); user->modes |= FLAGS_STAMPED; } @@ -333,13 +333,13 @@ wipeout_channel(struct chanNode *cNode, time_t new_time, char **modes, unsigned struct modeNode *mn = cNode->members.list[nn]; if ((mn->modes & MODE_CHANOP) && IsService(mn->user) && IsLocal(mn->user)) { change->args[argc].mode = MODE_CHANOP; - change->args[argc].member = mn; + change->args[argc].u.member = mn; argc++; } } assert(argc == change->argc); - change->args[0].member->modes &= ~MODE_CHANOP; - mod_chanmode_announce(change->args[0].member->user, cNode, change); + change->args[0].u.member->modes &= ~MODE_CHANOP; + mod_chanmode_announce(change->args[0].u.member->user, cNode, change); mod_chanmode_free(change); } } @@ -731,8 +731,14 @@ GetUserMode(struct chanNode *channel, struct userNode *user) { unsigned int n; struct modeNode *mn = NULL; + + verify(channel); + verify(channel->members.list); + verify(user); + verify(user->channels.list); if (channel->members.used < user->channels.used) { for (n=0; nmembers.used; n++) { + verify(channel->members.list[n]); if (user == channel->members.list[n]->user) { mn = channel->members.list[n]; break; @@ -740,6 +746,7 @@ GetUserMode(struct chanNode *channel, struct userNode *user) } } else { for (n=0; nchannels.used; n++) { + verify(user->channels.list[n]); if (channel == user->channels.list[n]->channel) { mn = user->channels.list[n]; break;