]> granicus.if.org Git - neomutt/commitdiff
nntp: reorg cleanup
authorRichard Russon <rich@flatcap.org>
Mon, 5 Nov 2018 22:54:20 +0000 (22:54 +0000)
committerRichard Russon <rich@flatcap.org>
Sun, 18 Nov 2018 16:32:37 +0000 (16:32 +0000)
nntp/newsrc.c
nntp/nntp.c
nntp/nntp_private.h

index b341086838220d2ddbc9f425f8169fd4e9ff581a..f38b8a883491edb9e900ebeb03ed3df3324a29d4 100644 (file)
@@ -121,7 +121,7 @@ void nntp_acache_free(struct NntpMboxData *mdata)
  */
 void nntp_hash_destructor_t(int type, void *obj, intptr_t data)
 {
-  nntp_mdata_free(obj);
+  nntp_mdata_free(&obj);
 }
 
 /**
index dc0c7520affa0bfd6d7cdf1f13bfeefe2a2d22d0..1e4bbb1ae1e814e4e939743ab04a4fa4d363b342 100644 (file)
@@ -166,17 +166,18 @@ struct NntpAccountData *nntp_adata_get(struct Mailbox *m)
  * nntp_mdata_free - Free NntpMboxData, used to destroy hash elements
  * @param ptr NNTP data
  */
-void nntp_mdata_free(void *ptr)
+void nntp_mdata_free(void **ptr)
 {
-  struct NntpMboxData *mdata = ptr;
-
-  if (!mdata)
+  if (!ptr || !*ptr)
     return;
+
+  struct NntpMboxData *mdata = *ptr;
+
   nntp_acache_free(mdata);
   mutt_bcache_close(&mdata->bcache);
   FREE(&mdata->newsrc_ent);
   FREE(&mdata->desc);
-  FREE(&ptr);
+  FREE(ptr);
 }
 
 /**
@@ -2563,6 +2564,7 @@ static int nntp_mbox_open(struct Context *ctx)
 
   time(&adata->check_time);
   m->mdata = mdata;
+  m->free_mdata = nntp_mdata_free;
   if (!mdata->bcache && (mdata->newsrc_ent || mdata->subscribed || SaveUnsubscribed))
     mdata->bcache = mutt_bcache_open(&adata->conn->account, mdata->group);
 
@@ -2712,7 +2714,7 @@ static int nntp_mbox_close(struct Context *ctx)
 
   tmp_mdata = mutt_hash_find(mdata->adata->groups_hash, mdata->group);
   if (!tmp_mdata || tmp_mdata != mdata)
-    nntp_mdata_free(mdata);
+    nntp_mdata_free((void **) &mdata);
   return 0;
 }
 
index 99400fe18ce3628da2488ec3eb083c304d5a98f0..9ea94c00c38c7d9ff11a8236e6c26e6db04007c7 100644 (file)
@@ -58,7 +58,7 @@ void nntp_delete_group_cache(struct NntpMboxData *mdata);
 struct NntpEmailData *nntp_edata_get(struct Email *e);
 void nntp_group_unread_stat(struct NntpMboxData *mdata);
 void nntp_hash_destructor_t(int type, void *obj, intptr_t data);
-void nntp_mdata_free(void *ptr);
+void nntp_mdata_free(void **ptr);
 void nntp_newsrc_gen_entries(struct Context *ctx);
 int  nntp_open_connection(struct NntpAccountData *adata);