struct mod_chanmode {
chan_mode_t modes_set, modes_clear;
unsigned int new_limit, argc;
+#ifndef NDEBUG
+ unsigned int alloc_argc;
+#endif
char new_key[KEYLEN + 1];
struct {
unsigned int mode;
#define MCP_KEY_FREE 0x0004 /* -k without a key argument */
#define MC_ANNOUNCE 0x0100 /* send a mod_chanmode() change out */
#define MC_NOTIFY 0x0200 /* make local callbacks to announce */
+#ifdef NDEBUG
+#define mod_chanmode_init(CHANMODE) do { memset((CHANMODE), 0, sizeof(*CHANMODE)); } while (0)
+#else
+#define mod_chanmode_init(CHANMODE) do { memset((CHANMODE), 0, sizeof(*CHANMODE)); (CHANMODE)->alloc_argc = ArrayLength((CHANMODE)->args); } while (0)
+#endif
+
struct mod_chanmode *mod_chanmode_alloc(unsigned int argc);
struct mod_chanmode *mod_chanmode_dup(struct mod_chanmode *orig, unsigned int extra);
struct mod_chanmode *mod_chanmode_parse(struct chanNode *channel, char **modes, unsigned int argc, unsigned int flags);