]> granicus.if.org Git - neomutt/commitdiff
Get rid of global variable
authorPietro Cerutti <gahr@gahr.ch>
Fri, 25 May 2018 10:53:37 +0000 (10:53 +0000)
committerRichard Russon <rich@flatcap.org>
Wed, 12 Dec 2018 15:10:17 +0000 (15:10 +0000)
init.c
mutt/group.c
mutt/group.h

diff --git a/init.c b/init.c
index 20fdc8d265e014fc8bd56a1fa342250f39932027..e30c3f3c377e89f3c437ce6b9beb75bed216a87a 100644 (file)
--- a/init.c
+++ b/init.c
@@ -2788,7 +2788,6 @@ void mutt_free_opts(void)
   mutt_regexlist_free(&UnMailLists);
   mutt_regexlist_free(&UnSubscribedLists);
 
-  mutt_hash_destroy(&Groups);
   mutt_hash_destroy(&ReverseAliases);
   mutt_hash_destroy(&TagFormats);
   mutt_hash_destroy(&TagTransforms);
@@ -2865,7 +2864,6 @@ int mutt_init(bool skip_sys_rc, struct ListHead *commands)
   err.data = mutt_mem_malloc(err.dsize);
   err.dptr = err.data;
 
-  Groups = mutt_hash_new(1031, 0);
   /* reverse alias keys need to be strdup'ed because of idna conversions */
   ReverseAliases = mutt_hash_new(1031, MUTT_HASH_STRCASECMP | MUTT_HASH_STRDUP_KEYS |
                                            MUTT_HASH_ALLOW_DUPS);
index 6b8a690f0e3a7d47feaf578df0f58b6c5ce05737..56947ae180568526b6a5898ea53e2fac92a93f65 100644 (file)
 #include "regex3.h"
 #include "string2.h"
 
-struct Hash *Groups;
+static struct Hash *groups(void)
+{
+  static struct Hash *g = NULL;
+  if (g == NULL)
+  {
+    g = mutt_hash_new(1031, 0);
+  }
+  return g;
+}
 
 /**
  * mutt_pattern_group - Match a pattern to a Group
@@ -54,14 +62,14 @@ struct Group *mutt_pattern_group(const char *k)
   if (!k)
     return 0;
 
-  p = mutt_hash_find(Groups, k);
+  p = mutt_hash_find(groups(), k);
   if (!p)
   {
     mutt_debug(2, "Creating group %s.\n", k);
     p = mutt_mem_calloc(1, sizeof(struct Group));
     p->name = mutt_str_strdup(k);
     STAILQ_INIT(&p->rs);
-    mutt_hash_insert(Groups, p->name, p);
+    mutt_hash_insert(groups(), p->name, p);
   }
 
   return p;
@@ -75,7 +83,7 @@ static void group_remove(struct Group *g)
 {
   if (!g)
     return;
-  mutt_hash_delete(Groups, g->name, g);
+  mutt_hash_delete(groups(), g->name, g);
   mutt_addr_free(&g->as);
   mutt_regexlist_free(&g->rs);
   FREE(&g->name);
index d742e52901855f9ee155d40c279dcb1144ba6114..653028bea52ffdddc48855f4d22ca3db60e80464 100644 (file)
@@ -32,8 +32,6 @@ struct Address;
 struct Buffer;
 struct Hash;
 
-extern struct Hash *Groups;
-
 #define MUTT_GROUP   0
 #define MUTT_UNGROUP 1