From ec4e52748e5dbb08f49e679c0f22b0da43149713 Mon Sep 17 00:00:00 2001 From: pk910 Date: Mon, 30 Jan 2012 17:11:20 +0100 Subject: [PATCH] fixed memory leak in tools.c and fixed allocation size of ChanUser entries --- src/ChanUser.c | 4 ++-- src/tools.c | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/ChanUser.c b/src/ChanUser.c index b9ffde3..795d237 100644 --- a/src/ChanUser.c +++ b/src/ChanUser.c @@ -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"); diff --git a/src/tools.c b/src/tools.c index 2cb1065..51402a0 100644 --- a/src/tools.c +++ b/src/tools.c @@ -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; -- 2.20.1