]> jfr.im git - irc/evilnet/x3.git/blobdiff - src/hash.c
Last patch caused a bug removing warn. fixed it here.
[irc/evilnet/x3.git] / src / hash.c
index 9cf2d4bc00f527451028af2463407e3601c1e10b..f4e0be5e479e4c3ec779d4a254a22ba3f446fb54 100644 (file)
@@ -1,7 +1,7 @@
 /* hash.c - IRC network state database
  * Copyright 2000-2004 srvx Development Team
  *
- * This file is part of srvx.
+ * This file is part of x3.
  *
  * srvx is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -503,7 +503,8 @@ AddChannelUser(struct userNode *user, struct chanNode* channel)
        modeList_append(&channel->members, mNode);
        modeList_append(&user->channels, mNode);
 
-        if (channel->members.used == 1)
+        if (channel->members.used == 1
+            && !(channel->modes & MODE_REGISTERED))
             mNode->modes |= MODE_CHANOP;
 
         for (n=0; n<jf_used; n++) {
@@ -731,8 +732,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; n<channel->members.used; n++) {
+            verify(channel->members.list[n]);
            if (user == channel->members.list[n]->user) {
                mn = channel->members.list[n];
                break;
@@ -740,6 +747,7 @@ GetUserMode(struct chanNode *channel, struct userNode *user)
        }
     } else {
        for (n=0; n<user->channels.used; n++) {
+            verify(user->channels.list[n]);
            if (channel == user->channels.list[n]->channel) {
                mn = user->channels.list[n];
                break;