bug fixes (from code coverage tests)
[srvx.git] / src / proto-common.c
index d5ebc8ac4a55e42409efec447cd77da134b6aa6c..93751e39d59ef7caa1e823f9dc793483e038c35f 100644 (file)
@@ -578,13 +578,20 @@ mod_chanmode_apply(struct userNode *who, struct chanNode *channel, struct mod_ch
                 break;
             }
             break;
-        default:
-            assert((change->args[ii].mode & (MODE_REMOVE|MODE_CHANOP|MODE_VOICE)) != 0);
+        case MODE_CHANOP:
+        case MODE_VOICE:
+        case MODE_VOICE|MODE_CHANOP:
+        case MODE_REMOVE|MODE_CHANOP:
+        case MODE_REMOVE|MODE_VOICE:
+        case MODE_REMOVE|MODE_VOICE|MODE_CHANOP:
             if (change->args[ii].mode & MODE_REMOVE)
                 change->args[ii].member->modes &= ~change->args[ii].mode;
             else
                 change->args[ii].member->modes |= change->args[ii].mode;
             break;
+        default:
+            assert(0 && "Invalid mode argument");
+            continue;
         }
     }
 }