From: Vsevolod Stakhov Date: Wed, 25 Mar 2015 18:23:24 +0000 (+0000) Subject: Do not store zeroes in hash table. X-Git-Tag: 0.9.0~424 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=06d5e6c256a86af708933b2abef80370d50bec3d;p=rspamd.git Do not store zeroes in hash table. --- diff --git a/src/libserver/task.c b/src/libserver/task.c index 9ac66b65c..e7a2c18af 100644 --- a/src/libserver/task.c +++ b/src/libserver/task.c @@ -457,15 +457,17 @@ rspamd_task_re_cache_add (struct rspamd_task *task, const gchar *re, guint value) { guint ret = RSPAMD_TASK_CACHE_NO_VALUE; + static const guint32 mask = 1 << 31; gpointer p; p = g_hash_table_lookup (task->re_cache, re); if (p != NULL) { - ret = GPOINTER_TO_INT (p); + ret = GPOINTER_TO_INT (p) & ~mask; } - g_hash_table_insert (task->re_cache, (gpointer)re, GINT_TO_POINTER (value)); + g_hash_table_insert (task->re_cache, (gpointer)re, + GINT_TO_POINTER (value | mask)); return ret; } @@ -474,12 +476,13 @@ guint rspamd_task_re_cache_check (struct rspamd_task *task, const gchar *re) { guint ret = RSPAMD_TASK_CACHE_NO_VALUE; + static const guint32 mask = 1 << 31; gpointer p; p = g_hash_table_lookup (task->re_cache, re); if (p != NULL) { - ret = GPOINTER_TO_INT (p); + ret = GPOINTER_TO_INT (p) & ~mask; } return ret;