fix segfault
[apps/madmutt.git] / mh.c
diff --git a/mh.c b/mh.c
index cfe7c36..ee799b3 100644 (file)
--- a/mh.c
+++ b/mh.c
@@ -17,6 +17,8 @@
 # include "config.h"
 #endif
 
+#include <lib-lib/mem.h>
+
 #include "mutt.h"
 #include "mx.h"
 #include "mh.h"
@@ -93,7 +95,7 @@ static void mhs_alloc (struct mh_sequences *mhs, int i)
 
 static void mhs_free_sequences (struct mh_sequences *mhs)
 {
-  mem_free (&mhs->flags);
+  p_delete(&mhs->flags);
 }
 
 static short mhs_check (struct mh_sequences *mhs, int i)
@@ -175,7 +177,7 @@ static void mh_read_sequences (struct mh_sequences *mhs, const char *path)
     }
   }
 
-  mem_free (&buff);
+  p_delete(&buff);
   safe_fclose (&fp);
 }
 
@@ -216,7 +218,7 @@ static int mh_mkstemp (CONTEXT * dest, FILE ** fp, char **tgt)
   }
 
   if ((*fp = fdopen (fd, "w")) == NULL) {
-    mem_free (tgt);
+    p_delete(tgt);
     close (fd);
     unlink (path);
     return (-1);
@@ -364,7 +366,7 @@ void mh_update_sequences (CONTEXT * ctx)
     unlink (tmpfname);
   }
 
-  mem_free (&tmpfname);
+  p_delete(&tmpfname);
 }
 
 static void mh_sequences_add_one (CONTEXT * ctx, int n, short unseen,
@@ -416,7 +418,7 @@ static void mh_sequences_add_one (CONTEXT * ctx, int n, short unseen,
     }
   }
   safe_fclose (&ofp);
-  mem_free (&buff);
+  p_delete(&buff);
 
   if (!unseen_done && unseen)
     fprintf (nfp, "%s: %d\n", NONULL (MhUnseen), n);
@@ -431,7 +433,7 @@ static void mh_sequences_add_one (CONTEXT * ctx, int n, short unseen,
   if (safe_rename (tmpfname, sequences) != 0)
     unlink (tmpfname);
 
-  mem_free (&tmpfname);
+  p_delete(&tmpfname);
 }
 
 static void mh_update_maildir (struct maildir *md, struct mh_sequences *mhs)
@@ -462,11 +464,11 @@ static void maildir_free_entry (struct maildir **md)
   if (!md || !*md)
     return;
 
-  mem_free (&(*md)->canon_fname);
+  p_delete(&(*md)->canon_fname);
   if ((*md)->h)
     mutt_free_header (&(*md)->h);
 
-  mem_free (md);
+  p_delete(md);
 }
 
 static void maildir_free_maildir (struct maildir **md)
@@ -527,7 +529,7 @@ static void maildir_parse_flags (HEADER * h, const char *path)
   }
 
   if (q == h->maildir_flags)
-    mem_free (&h->maildir_flags);
+    p_delete(&h->maildir_flags);
   else if (q)
     *q = '\0';
 }
@@ -644,7 +646,7 @@ static int maildir_parse_entry (CONTEXT * ctx, struct maildir ***last,
     else
       h->path = str_dup (fname);
 
-    entry = mem_calloc (sizeof (struct maildir), 1);
+    entry = p_new(struct maildir, 1);
     entry->h = h;
     entry->header_parsed = (ctx->magic == M_MH);
 #ifdef USE_INODESORT
@@ -904,7 +906,7 @@ void maildir_delayed_parsing (CONTEXT * ctx, struct maildir *md)
     else
       mutt_free_header (&p->h);
 #ifdef USE_HCACHE
-    mem_free (&data);
+    p_delete(&data);
 #endif
   }
 #ifdef USE_HCACHE
@@ -1068,7 +1070,7 @@ static int maildir_open_new_message (MESSAGE * msg, CONTEXT * dest, HEADER * hdr
   }
 
   if ((msg->fp = fdopen (fd, "w")) == NULL) {
-    mem_free (&msg->path);
+    p_delete(&msg->path);
     close (fd);
     unlink (path);
     return (-1);
@@ -1133,7 +1135,7 @@ static int maildir_commit_message (MESSAGE * msg, CONTEXT * ctx, HEADER * hdr)
     if (safe_rename (msg->path, full) == 0) {
       if (hdr)
         str_replace (&hdr->path, path);
-      mem_free (&msg->path);
+      p_delete(&msg->path);
 
       /*
        * Adjust the mtime on the file to match the time at which this
@@ -1219,7 +1221,7 @@ static int _mh_commit_message (MESSAGE * msg, CONTEXT * ctx, HEADER * hdr,
     if (safe_rename (msg->path, path) == 0) {
       if (hdr)
         str_replace (&hdr->path, tmp);
-      mem_free (&msg->path);
+      p_delete(&msg->path);
       break;
     }
     else if (errno != EEXIST) {
@@ -1720,7 +1722,7 @@ static int mh_check_mailbox (CONTEXT * ctx, int *index_hint, int unused)
       safe_fclose (&fp);
       if (safe_rename (tmp, buf) == -1)
         unlink (tmp);
-      mem_free (&tmp);
+      p_delete(&tmp);
     }
   }
 
@@ -1976,7 +1978,7 @@ static int maildir_is_magic (const char* path, struct stat* st) {
 
 /* routines common to maildir and mh */
 static mx_t* reg_mx (void) {
-  mx_t* fmt = mem_calloc (1, sizeof (mx_t));
+  mx_t* fmt = p_new(mx_t, 1);
   fmt->local = 1;
   fmt->mx_access = access;
   fmt->mx_sync_mailbox = mh_sync_mailbox;