From: Vsevolod Stakhov Date: Tue, 24 Mar 2009 10:29:52 +0000 (+0300) Subject: * Fix XS module to work with current type of memory allocation X-Git-Tag: 0.2.7~239 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5497b1213a5ee69cd25bd8cce26d223e8277ee3a;p=thirdparty%2Frspamd.git * Fix XS module to work with current type of memory allocation --- diff --git a/perl/Rspamd/Hash.xs b/perl/Rspamd/Hash.xs index 5a32fa6a1a..abf75ce7e4 100644 --- a/perl/Rspamd/Hash.xs +++ b/perl/Rspamd/Hash.xs @@ -43,7 +43,7 @@ hash_FETCH (obj, key) obj->fetchvalue = NULL; - gret = message_get_header (msg, key); + gret = message_get_header (NULL, msg, key); if (!gret || gret->data == NULL) { if (gret) { @@ -150,7 +150,7 @@ hash_EXISTS (obj, key) GList *gret, *item; CODE: msg = obj->objptr; - gret = message_get_header (msg, key); + gret = message_get_header (NULL, msg, key); RETVAL = (gret != NULL && gret->data != NULL); if (gret) { item = gret; diff --git a/src/message.c b/src/message.c index fb0473b802..64467c8273 100644 --- a/src/message.c +++ b/src/message.c @@ -592,7 +592,12 @@ local_message_get_header(memory_pool_t *pool, GMimeMessage *message, const char h = GMIME_OBJECT(message)->headers->headers; while (h) { if (h->value && !g_strncasecmp (field, h->name, strlen (field))) { - gret = g_list_prepend (gret, memory_pool_strdup (pool, h->value)); + if (pool != NULL) { + gret = g_list_prepend (gret, memory_pool_strdup (pool, h->value)); + } + else { + gret = g_list_prepend (gret, g_strdup (h->value)); + } } h = h->next; } @@ -608,7 +613,13 @@ local_message_get_header(memory_pool_t *pool, GMimeMessage *message, const char while (g_mime_header_iter_is_valid (iter)) { name = g_mime_header_iter_get_name (iter); if (!g_strncasecmp (field, name, strlen (name))) { - gret = g_list_prepend (gret, memory_pool_strdup (pool, g_mime_header_iter_get_value (iter))); + if (pool != NULL) { + gret = g_list_prepend (gret, memory_pool_strdup (pool, g_mime_header_iter_get_value (iter))); + } + else { + gret = g_list_prepend (gret, g_strdup (g_mime_header_iter_get_value (iter))); + } + } } if (!g_mime_header_iter_next (iter)) { break; @@ -811,7 +822,12 @@ message_get_header (memory_pool_t *pool, GMimeMessage *message, const char *fiel } } if (gret == NULL && ret != NULL) { - gret = g_list_prepend (gret, memory_pool_strdup (pool, ret)); + if (pool != NULL) { + gret = g_list_prepend (gret, memory_pool_strdup (pool, ret)); + } + else { + gret = g_list_prepend (gret, g_strdup (ret)); + } } if (fieldfunc[i].functype == FUNC_CHARFREEPTR && ret) { g_free (ret);