fixed memory leak in tools.c and fixed allocation size of ChanUser entries
authorpk910 <philipp@zoelle1.de>
Mon, 30 Jan 2012 16:11:20 +0000 (17:11 +0100)
committerpk910 <philipp@zoelle1.de>
Mon, 30 Jan 2012 16:11:20 +0000 (17:11 +0100)
src/ChanUser.c
src/tools.c

index b9ffde32ca1d76bcf07b57d134fdb5d09560ece2..795d237a2da298075a093404c4ea29d386da9803 100644 (file)
@@ -21,7 +21,7 @@
 #include "UserNode.h"
 
 struct ChanUser* addChanUser(struct ChanNode *chan, struct UserNode *user) {
-    struct ChanUser *chanuser = malloc(sizeof(*chan));
+    struct ChanUser *chanuser = malloc(sizeof(*chanuser));
     if (!chanuser)
     {
         perror("malloc() failed");
@@ -49,7 +49,7 @@ struct ChanUser* addChanUser(struct ChanNode *chan, struct UserNode *user) {
 }
 
 struct ChanUser* addInvisibleChanUser(struct ChanNode *chan, struct UserNode *user) {
-    struct ChanUser *chanuser = malloc(sizeof(*chan));
+    struct ChanUser *chanuser = malloc(sizeof(*chanuser));
     if (!chanuser)
     {
         perror("malloc() failed");
index 2cb1065fa8458b33b2235200e3269f79a1e48558..51402a092467d40e6290b6caf4272d639215bef1 100644 (file)
@@ -416,6 +416,8 @@ void flushModeBuffer(struct ModeBuffer *modeBuf) {
             modeStr[modePos++] = modeBuf->addModes[i];
             if(modeBuf->addModesParams[i]) {
                 paramPos += sprintf(paramStr + paramPos, " %s", modeBuf->addModesParams[i]);
+                free(modeBuf->addModesParams[i]);
+                modeBuf->addModesParams[i] = NULL;
             }
         }
         modeBuf->addCount = 0;
@@ -426,6 +428,8 @@ void flushModeBuffer(struct ModeBuffer *modeBuf) {
             modeStr[modePos++] = modeBuf->delModes[i];
             if(modeBuf->delModesParams[i]) {
                 paramPos += sprintf(paramStr + paramPos, " %s", modeBuf->delModesParams[i]);
+                free(modeBuf->delModesParams[i]);
+                modeBuf->delModesParams[i] = NULL;
             }
         }
         modeBuf->delCount = 0;