Fix bug #916138 so -l doesn't gobble an argument.
[ircu2.10.12-pk.git] / ircd / channel.c
index 06634693c37e6088e4f389646bab7e53bf8b9769..29b773488fcd0e07e72461b8242a490c67353b2f 100644 (file)
@@ -1524,7 +1524,7 @@ modebuf_flush_int(struct ModeBuf *mbuf, int all)
     MODE_WASDELJOINS,   'd',
 /*  MODE_KEY,          'k', */
 /*  MODE_BAN,          'b', */
-/*  MODE_LIMIT,                'l', */
+    MODE_LIMIT,                'l',
 /*  MODE_APASS,                'A', */
 /*  MODE_UPASS,                'u', */
     0x0, 0x0
@@ -1930,6 +1930,10 @@ modebuf_mode_uint(struct ModeBuf *mbuf, unsigned int mode, unsigned int uint)
   assert(0 != mbuf);
   assert(0 != (mode & (MODE_ADD | MODE_DEL)));
 
+  if (mode == (MODE_LIMIT | MODE_DEL)) {
+      mbuf->mb_rem |= mode;
+      return;
+  }
   MB_TYPE(mbuf, mbuf->mb_count) = mode;
   MB_UINT(mbuf, mbuf->mb_count) = uint;