diff --git a/src/memory/allocators.c b/src/memory/allocators.c index 069f788..e497733 100644 --- a/src/memory/allocators.c +++ b/src/memory/allocators.c @@ -104,14 +104,15 @@ uirc_malloc_message(const char* command, ...) { IRC_Message* ret; assert(command != NULL); - if ((ret = malloc(sizeof(IRC_Capability))) != NULL) { - memset(ret, 0, sizeof(IRC_Capability)); + if ((ret = malloc(sizeof(IRC_Message))) != NULL) { + memset(ret, 0, sizeof(IRC_Message)); if ((ret->command = malloc_string(command, strlen(command))) == NULL) { uirc_free_message(ret); return NULL; } - return ret; - } + } else + return NULL; + va_list ap; va_start(ap, command); for (unsigned short i = 0; i < IRC_MAXARGS; i++) { @@ -119,12 +120,13 @@ uirc_malloc_message(const char* command, ...) if ((carg = va_arg(ap, const char*)) != NULL) { if ((ret->args[i] = malloc_string(carg, strlen(carg))) == NULL) { uirc_free_message(ret); - return NULL; + ret = NULL; } } } va_end(ap); - return NULL; + + return ret; } IRC_Buffer*