1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
From 29ebac987da1da2c892aed5ed329256b7bc94bca Mon Sep 17 00:00:00 2001
From: Nei <ailin.nemui@gmail.com>
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 ce49925b1..0b2d8e776 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 <ailin-nemui@users.noreply.github.com>
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 54dfb5fb2..0bc88ab8d 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 */
|