make mutt_body_free a bit more mad-friendly
authorPierre Habouzit <madcoder@debian.org>
Wed, 15 Nov 2006 16:05:42 +0000 (17:05 +0100)
committerPierre Habouzit <madcoder@debian.org>
Wed, 15 Nov 2006 16:05:42 +0000 (17:05 +0100)
Signed-off-by: Pierre Habouzit <madcoder@debian.org>
muttlib.c

index d607b4f..2a5fc3b 100644 (file)
--- a/muttlib.c
+++ b/muttlib.c
@@ -168,19 +168,13 @@ int mutt_copy_body (FILE * fp, BODY ** tgt, BODY * src)
 }
 
 
-
-void mutt_free_body (BODY ** p)
+static void body_wipe(BODY *b)
 {
-  BODY *a = *p, *b;
-
-  while (a) {
-    b = a;
-    a = a->next;
-
     if (b->parameter)
-      parameter_list_wipe(&b->parameter);
+        parameter_list_wipe(&b->parameter);
+
     if (b->unlink && b->filename) {
-      unlink (b->filename);
+        unlink (b->filename);
     }
 
     p_delete(&b->filename);
@@ -191,18 +185,25 @@ void mutt_free_body (BODY ** p)
     p_delete(&b->form_name);
 
     if (b->hdr) {
-      /* Don't free twice (b->hdr->content = b->parts) */
-      b->hdr->content = NULL;
-      header_delete(&b->hdr);
+        /* Don't free twice (b->hdr->content = b->parts) */
+        b->hdr->content = NULL;
+        header_delete(&b->hdr);
     }
 
     if (b->parts)
-      mutt_free_body (&b->parts);
+        mutt_free_body(&b->parts);
+}
 
-    p_delete(&b);
-  }
+DO_DELETE(BODY, body);
 
-  *p = 0;
+void mutt_free_body(BODY **p)
+{
+    while (*p) {
+        BODY *b = *p;
+        *p = b->next;
+
+        body_delete(&b);
+    }
 }
 
 HEADER *mutt_dup_header (HEADER * h)