]> granicus.if.org Git - mutt/commitdiff
Fix the hcache type punning warning.
authorKevin McCarthy <kevin@8t8.us>
Sat, 17 Jan 2015 22:42:28 +0000 (14:42 -0800)
committerKevin McCarthy <kevin@8t8.us>
Sat, 17 Jan 2015 22:42:28 +0000 (14:42 -0800)
This patch fixes the type punning warning by switching from (safe but
perhaps not elegant) casting to using a union.

Thanks to Vincent Lefevre for his input and suggestion to use the union
as a better solution to the problem!

hcache.c

index 72fec569cc65b7a0db2137290ef02986830527fb..51f2f1a84ac49b75defa5e324225678995488e05 100644 (file)
--- a/hcache.c
+++ b/hcache.c
@@ -1135,7 +1135,10 @@ mutt_hcache_open(const char *path, const char *folder, hcache_namer_t namer)
 
   /* Calculate the current hcache version from dynamic configuration */
   if (hcachever == 0x0) {
-    unsigned char digest[16];
+    union {
+      unsigned char charval[16];
+      unsigned int intval;
+    } digest;
     struct md5_ctx ctx;
     SPAM_LIST *spam;
     RX_LIST *nospam;
@@ -1161,8 +1164,8 @@ mutt_hcache_open(const char *path, const char *folder, hcache_namer_t namer)
     }
 
     /* Get a hash and take its bytes as an (unsigned int) hash version */
-    md5_finish_ctx(&ctx, digest);
-    hcachever = *((unsigned int *)digest);
+    md5_finish_ctx(&ctx, digest.charval);
+    hcachever = digest.intval;
   }
 
   h->db = NULL;