Further cleanups and bugfixes
[srvx.git] / src / proto.h
index 85f0491090ceb95e8e0a2f4e2d8cb24c75bb05fd..7612bc8d8af98bde7e92b60f06e38063a4130066 100644 (file)
@@ -182,6 +182,9 @@ typedef unsigned long chan_mode_t;
 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;
@@ -196,6 +199,12 @@ struct mod_chanmode {
 #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);