diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2019-06-26 15:00:52 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2019-06-26 15:00:52 +0100 |
commit | e7d92f9a0a4a90778861b3247297a60e7bf464c9 (patch) | |
tree | 8813de3e53e02df589d1beddda6e5a7e35d8a7bc /src | |
parent | 4ac44f3b22819c2046b7820721e8f7ddd774b505 (diff) | |
download | rspamd-e7d92f9a0a4a90778861b3247297a60e7bf464c9.tar.gz rspamd-e7d92f9a0a4a90778861b3247297a60e7bf464c9.zip |
[Minor] Another try to plug a leak
Diffstat (limited to 'src')
-rw-r--r-- | src/libmime/lang_detection.c | 4 | ||||
-rw-r--r-- | src/libmime/message.c | 8 | ||||
-rw-r--r-- | src/libserver/task.c | 2 |
3 files changed, 13 insertions, 1 deletions
diff --git a/src/libmime/lang_detection.c b/src/libmime/lang_detection.c index 3f2a50134..7096da585 100644 --- a/src/libmime/lang_detection.c +++ b/src/libmime/lang_detection.c @@ -1828,6 +1828,10 @@ rspamd_language_detector_detect (struct rspamd_task *task, d->total_occurencies++; } + if (part->languages != NULL) { + g_ptr_array_unref (part->languages); + } + part->languages = result; ret = TRUE; } diff --git a/src/libmime/message.c b/src/libmime/message.c index cd3772c78..482287769 100644 --- a/src/libmime/message.c +++ b/src/libmime/message.c @@ -1424,10 +1424,18 @@ rspamd_message_process (struct rspamd_task *task) if (sel->language && sel->language[0]) { /* Propagate language */ if (sel == p1) { + if (p2->languages) { + g_ptr_array_unref (p2->languages); + } + p2->language = sel->language; p2->languages = g_ptr_array_ref (sel->languages); } else { + if (p1->languages) { + g_ptr_array_unref (p1->languages); + } + p1->language = sel->language; p1->languages = g_ptr_array_ref (sel->languages); } diff --git a/src/libserver/task.c b/src/libserver/task.c index 4017b0094..04be61744 100644 --- a/src/libserver/task.c +++ b/src/libserver/task.c @@ -271,7 +271,7 @@ rspamd_task_free (struct rspamd_task *task) g_array_free (tp->normalized_hashes, TRUE); } if (tp->languages) { - g_ptr_array_free (tp->languages, TRUE); + g_ptr_array_unref (tp->languages); } } |