From 29ebac987da1da2c892aed5ed329256b7bc94bca Mon Sep 17 00:00:00 2001 From: Nei Date: Thu, 29 Jun 2017 13:48:44 +0000 Subject: [PATCH 1/2] Check return value of localtime Fixes #10 --- src/core/misc.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/core/misc.c b/src/core/misc.c index ce49925b..0b2d8e77 100644 --- a/src/core/misc.c +++ b/src/core/misc.c @@ -560,6 +560,9 @@ char *my_asctime(time_t t) int len; tm = localtime(&t); + if (tm == NULL) + return g_strdup("???"); + str = g_strdup(asctime(tm)); len = strlen(str); From 73b851c39c11d01199e6c040749fb20e468f6c8d Mon Sep 17 00:00:00 2001 From: ailin-nemui Date: Tue, 4 Jul 2017 16:10:55 +0200 Subject: [PATCH 2/2] correct GHashTable usage --- src/core/nicklist.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/core/nicklist.c b/src/core/nicklist.c index 54dfb5fb..0bc88ab8 100644 --- a/src/core/nicklist.c +++ b/src/core/nicklist.c @@ -54,23 +54,26 @@ static void nick_hash_add(CHANNEL_REC *channel, NICK_REC *nick) static void nick_hash_remove(CHANNEL_REC *channel, NICK_REC *nick) { - NICK_REC *list; + NICK_REC *list, *newlist; list = g_hash_table_lookup(channel->nicks, nick->nick); if (list == NULL) return; - if (list == nick || list->next == NULL) { - g_hash_table_remove(channel->nicks, nick->nick); - if (list->next != NULL) { - g_hash_table_insert(channel->nicks, nick->next->nick, - nick->next); - } + if (list == nick) { + newlist = nick->next; } else { + newlist = list; while (list->next != nick) list = list->next; list->next = nick->next; } + + g_hash_table_remove(channel->nicks, nick->nick); + if (newlist != NULL) { + g_hash_table_insert(channel->nicks, newlist->nick, + newlist); + } } /* Add new nick to list */