]> granicus.if.org Git - neomutt/commitdiff
change free functions to use void**
authorRichard Russon <rich@flatcap.org>
Thu, 13 Sep 2018 22:17:02 +0000 (23:17 +0100)
committerRichard Russon <rich@flatcap.org>
Thu, 13 Sep 2018 23:14:54 +0000 (00:14 +0100)
mailbox.c
mailbox.h
mbox/mbox.c
notmuch/mutt_notmuch.c
pop/pop.c

index c4de1b4acdaf84f2205c7691bf44d77db4ef85e3..cc6276ac2c281ff9f24aa5815fd6ba36eb377586 100644 (file)
--- a/mailbox.c
+++ b/mailbox.c
@@ -205,10 +205,8 @@ void mailbox_free(struct Mailbox **mailbox)
     return;
 
   FREE(&(*mailbox)->desc);
-  if ((*mailbox)->free_data)
-    (*mailbox)->free_data((*mailbox)->data);
-  (*mailbox)->data = NULL;
-
+  if ((*mailbox)->data && (*mailbox)->free_data)
+    (*mailbox)->free_data(&(*mailbox)->data);
   FREE(mailbox);
 }
 
index 22efaa435251a6cc14e39baf7e940415ad1ef2bc..37165d930a14113fcef851d035924ab11e131c16 100644 (file)
--- a/mailbox.h
+++ b/mailbox.h
@@ -99,8 +99,8 @@ struct Mailbox
   struct timespec last_visited;       /**< time of last exit from this mailbox */
   struct timespec stats_last_checked; /**< mtime of mailbox the last time stats where checked. */
 
-  void *data;                /**< driver specific data */
-  void (*free_data)(void *); /**< driver-specific data free function */
+  void *data;                 /**< driver specific data */
+  void (*free_data)(void **); /**< driver-specific data free function */
   const struct MxOps *mx_ops;
 
   bool changed : 1;   /**< mailbox has been modified */
index 4cbe7e918067bd753bf9d305296b7f8623f5eaf2..0f79abca1ac85bb294ba1d8f89a9b29665a89747 100644 (file)
@@ -91,12 +91,12 @@ static struct MboxData *new_mboxdata(void)
  * free_mboxdata - Free data attached to the Mailbox
  * @param data Private mailbox data
  */
-static void free_mboxdata(void *data)
+static void free_mboxdata(void **data)
 {
-  if (!data)
+  if (!data || !*data)
     return;
 
-  struct MboxData *m = data;
+  struct MboxData *m = *data;
 
   mutt_file_fclose(&m->fp);
 }
index aa1b01ec0f90e1b29b3cb4ac18da159dbbe9797a..30217dbb87f0e55366c0e77bd0c0abdd178e1d05 100644 (file)
@@ -177,14 +177,14 @@ static struct NmEmailData *new_emaildata(void)
  * the database.  This function will close the database, free the resources and
  * the struct itself.
  */
-static void free_mboxdata(void *data)
+static void free_mboxdata(void **data)
 {
-  if (!data)
+  if (!data || !*data)
     return;
 
   mutt_debug(1, "nm: freeing context data %p\n", data);
 
-  struct NmMboxData *mdata = data;
+  struct NmMboxData *mdata = *data;
 
   if (mdata->db)
 #ifdef NOTMUCH_API_3
@@ -197,7 +197,7 @@ static void free_mboxdata(void *data)
   url_free(&mdata->db_url);
   FREE(&mdata->db_url_holder);
   FREE(&mdata->db_query);
-  FREE(&mdata);
+  FREE(data);
 }
 
 /**
index bbcb20538150477bdb63e4b11594708d53a93ce9..5a452b546ae701a991dfe5e5370d8ccfe54c3c07 100644 (file)
--- a/pop/pop.c
+++ b/pop/pop.c
@@ -129,9 +129,12 @@ static struct PopEmailData *new_emaildata(const char *uid)
  * the database.  This function will close the database, free the resources and
  * the struct itself.
  */
-static void free_mboxdata(void *data)
+static void free_mboxdata(void **data)
 {
-  FREE(&data);
+  if (!data || !*data)
+    return;
+
+  FREE(data);
 }
 
 /**