aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2018-08-15 15:12:27 +0100
committerGitHub <noreply@github.com>2018-08-15 15:12:27 +0100
commitf01c0800f7a9caf1b2b4e9c58b044d5def09e76a (patch)
tree2b29eede820bf3f3eb034ec2ebdc20ab49a205d6 /src
parent6e11dca58aaa6d31e31dffacc78012099ae36e21 (diff)
parent65ebfc1f05358ed000e33c8a09c4df1fc0138255 (diff)
downloadrspamd-f01c0800f7a9caf1b2b4e9c58b044d5def09e76a.tar.gz
rspamd-f01c0800f7a9caf1b2b4e9c58b044d5def09e76a.zip
Merge pull request #2423 from negram/dont-use-foreach-on-set
[Minor] kh_foreach should not be used with hash sets, it couses segfa…
Diffstat (limited to 'src')
-rw-r--r--src/libserver/events.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/libserver/events.c b/src/libserver/events.c
index f62005b96..bff35351f 100644
--- a/src/libserver/events.c
+++ b/src/libserver/events.c
@@ -309,14 +309,17 @@ void
rspamd_session_cleanup (struct rspamd_async_session *session)
{
struct rspamd_async_event *ev;
- gchar t;
+ int i;
if (session == NULL) {
msg_err ("session is NULL");
return;
}
- kh_foreach (session->events, ev, t, {
+ for (i = kh_begin (session->events); i != kh_end (session->events); i ++) {
+ if (!kh_exist (session->events, i)) continue;
+ ev = kh_key (session->events, i);
+
/* Call event's finalizer */
msg_debug_session ("removed event on destroy: %p, subsystem: %s",
ev->user_data,
@@ -325,9 +328,7 @@ rspamd_session_cleanup (struct rspamd_async_session *session)
if (ev->fin != NULL) {
ev->fin (ev->user_data);
}
- });
-
- (void)t;
+ }
kh_clear (rspamd_events_hash, session->events);
}