]> granicus.if.org Git - neomutt/commitdiff
Clean up address_uses_unicode() (closes #3794)
authorKevin McCarthy <kevin@8t8.us>
Thu, 26 Nov 2015 19:01:19 +0000 (11:01 -0800)
committerKevin McCarthy <kevin@8t8.us>
Thu, 26 Nov 2015 19:01:19 +0000 (11:01 -0800)
Pull the null check out of the loop.  Use a bit comparison to detect if
the high bit is set: this avoids a warning for platforms where char is
implicitly signed (where comparing < 128 is always true).

smtp.c

diff --git a/smtp.c b/smtp.c
index f18b93db411f9637f0fc1d9dd0b3617846411989..da80f5e7e5089bf236d68d25ddd11a53347e0d07 100644 (file)
--- a/smtp.c
+++ b/smtp.c
@@ -242,12 +242,18 @@ smtp_data (CONNECTION * conn, const char *msgfile)
 
 /* Returns 1 if a contains at least one 8-bit character, 0 if none do.
  */
-static int
-address_uses_unicode(const char * a) {
-  while(a && *a > 0 && *a < 128)
+static int address_uses_unicode(const char *a)
+{
+  if (!a)
+    return 0;
+
+  while (*a)
+  {
+    if ((unsigned char) *a & (1<<7))
+      return 1;
     a++;
-  if(a && *a)
-    return 1;
+  }
+
   return 0;
 }
 
@@ -255,8 +261,8 @@ address_uses_unicode(const char * a) {
 /* Returns 1 if any address in a contains at least one 8-bit
  * character, 0 if none do.
  */
-static int
-addresses_use_unicode(const ADDRESS* a) {
+static int addresses_use_unicode(const ADDRESS* a)
+{
   while (a)
   {
     if(a->mailbox && !a->group && address_uses_unicode(a->mailbox))