]> source.dussan.org Git - rspamd.git/commitdiff
Memory leak.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 2 Apr 2015 13:56:55 +0000 (14:56 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 2 Apr 2015 13:56:55 +0000 (14:56 +0100)
src/libstat/stat_process.c
src/libutil/util.c
src/libutil/util.h

index 7587baec1e4a7e8c95af6dd7f9579238c9a67b68..7549bcce3ac25ba3289b2086491822c3a66775f3 100644 (file)
@@ -95,7 +95,8 @@ preprocess_init_stat_token (gpointer k, gpointer v, gpointer d)
 
        t->results = g_array_sized_new (FALSE, TRUE,
                        sizeof (struct rspamd_token_result), cbdata->results_count);
-       g_array_set_size (t->results, cbdata->results_count);
+       rspamd_mempool_add_destructor (cbdata->task->task_pool,
+                       rspamd_array_free_hard, t->results);
 
        cur = g_list_first (cbdata->classifier_runtimes);
 
index 259e242e3d831dbc89bd7df64a1835e2753678c4..5e48dcdcf0379259a3e46b6ccede55aafb481c3e 100644 (file)
@@ -2340,3 +2340,11 @@ rspamd_ptr_array_free_hard (gpointer p)
 
        g_ptr_array_free (ar, TRUE);
 }
+
+void
+rspamd_array_free_hard (gpointer p)
+{
+       GArray *ar = (GArray *)p;
+
+       g_array_free (ar, TRUE);
+}
index b0825bfbf0832a2fcac552ef9aebcefaa2b4764b..de28fe93b760715e9d2cd2a543649126286d9269 100644 (file)
@@ -447,4 +447,10 @@ gdouble rspamd_get_ticks (void);
  */
 void rspamd_ptr_array_free_hard (gpointer p);
 
+/**
+ * Special utility to help array freeing in rspamd_mempool
+ * @param p
+ */
+void rspamd_array_free_hard (gpointer p);
+
 #endif