]> source.dussan.org Git - rspamd.git/commitdiff
* Fix XS module to work with current type of memory allocation
authorVsevolod Stakhov <vsevolod@rambler-co.ru>
Tue, 24 Mar 2009 10:29:52 +0000 (13:29 +0300)
committerVsevolod Stakhov <vsevolod@rambler-co.ru>
Tue, 24 Mar 2009 10:29:52 +0000 (13:29 +0300)
perl/Rspamd/Hash.xs
src/message.c

index 5a32fa6a1a03496bfcb102c2e7824bc4fcb1424b..abf75ce7e45f59c45ab1b5fa46829cc2495e15dd 100644 (file)
@@ -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;
index fb0473b80280c31ac217826cdee173d80ad635b7..64467c82732306cfd7930a50ebf230695b25803b 100644 (file)
@@ -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);