fix a segfault introduced by some nasty const /o\
[apps/madmutt.git] / url.c
diff --git a/url.c b/url.c
index d9cc4de..eb9d7f6 100644 (file)
--- a/url.c
+++ b/url.c
@@ -16,6 +16,7 @@
 #endif
 
 #include "mutt.h"
+#include "ascii.h"
 #include "mapping.h"
 #include "url.h"
 
@@ -32,6 +33,7 @@ static struct mapping_t UrlMap[] = {
   {"pop", U_POP},
   {"pops", U_POPS},
   {"nntp", U_NNTP},
+  {"news", U_NNTP},
   {"nntps", U_NNTPS},
   {"snews", U_NNTPS},
   {"mailto", U_MAILTO},
@@ -171,8 +173,8 @@ int url_ciss_tostring (ciss_url_t * ciss, char *dest, size_t len, int flags)
   snprintf (dest, len, "%s:", mutt_getnamebyvalue (ciss->scheme, UrlMap));
 
   if (ciss->host) {
-    safe_strcat (dest, len, "//");
-    len -= (l = safe_strlen (dest));
+    str_cat (dest, len, "//");
+    len -= (l = str_len (dest));
     dest += l;
 
     if (ciss->user) {
@@ -181,7 +183,7 @@ int url_ciss_tostring (ciss_url_t * ciss, char *dest, size_t len, int flags)
       else
         snprintf (dest, len, "%s@", ciss->user);
 
-      len -= (l = safe_strlen (dest));
+      len -= (l = str_len (dest));
       dest += l;
     }
 
@@ -192,7 +194,7 @@ int url_ciss_tostring (ciss_url_t * ciss, char *dest, size_t len, int flags)
   }
 
   if (ciss->path)
-    safe_strcat (dest, len, ciss->path);
+    str_cat (dest, len, ciss->path);
 
   return 0;
 }
@@ -212,7 +214,7 @@ int url_parse_mailto (ENVELOPE * e, char **body, const char *src)
   if (!(t = strchr (src, ':')))
     return -1;
 
-  if ((tmp = safe_strdup (t + 1)) == NULL)
+  if ((tmp = str_dup (t + 1)) == NULL)
     return -1;
 
   if ((headers = strchr (tmp, '?')))
@@ -238,7 +240,7 @@ int url_parse_mailto (ENVELOPE * e, char **body, const char *src)
     }
     else {
 #define SAFEPFX (option (OPTSTRICTMAILTO) ? "" : "X-Mailto-")
-      taglen = safe_strlen (tag) + safe_strlen (SAFEPFX);
+      taglen = str_len (tag) + str_len (SAFEPFX);
       /* mutt_parse_rfc822_line makes some assumptions */
       snprintf (scratch, sizeof (scratch), "%s%s: %s", SAFEPFX, tag, value);
 #undef SAVEPFX
@@ -248,11 +250,13 @@ int url_parse_mailto (ENVELOPE * e, char **body, const char *src)
       mutt_parse_rfc822_line (e, NULL, scratch, value, 1, 0, 0, &last);
       /* if $strict_mailto is set, force editing headers to let
        * users have a look at what we got */
-      if (!option (OPTSTRICTMAILTO))
+      if (!option (OPTSTRICTMAILTO)) {
+        set_option (OPTXMAILTO);
         set_option (OPTEDITHDRS);
+      }
     }
   }
 
-  FREE (&tmp);
+  mem_free (&tmp);
   return 0;
 }