[Svn] r2315 - in trunk/roundcubemail: . program/include

trac at roundcube.net trac at roundcube.net
Fri Feb 27 11:44:17 CET 2009


Author: thomasb
Date: 2009-02-27 04:44:17 -0600 (Fri, 27 Feb 2009)
New Revision: 2315

Modified:
   trunk/roundcubemail/CHANGELOG
   trunk/roundcubemail/program/include/main.inc
Log:
Don't return empty string when UTF-7 decoding fails + cleanup codestyle

Modified: trunk/roundcubemail/CHANGELOG
===================================================================
--- trunk/roundcubemail/CHANGELOG	2009-02-27 10:22:09 UTC (rev 2314)
+++ trunk/roundcubemail/CHANGELOG	2009-02-27 10:44:17 UTC (rev 2315)
@@ -4,6 +4,7 @@
 2009/02/27 (thomasb)
 ----------
 - Fix mime-type detection using a hard-coded map (#1485311)
+- Don't return empty string if charset conversion failed (#1485757)
 
 2009/02/26 (alec)
 ----------

Modified: trunk/roundcubemail/program/include/main.inc
===================================================================
--- trunk/roundcubemail/program/include/main.inc	2009-02-27 10:22:09 UTC (rev 2314)
+++ trunk/roundcubemail/program/include/main.inc	2009-02-27 10:44:17 UTC (rev 2315)
@@ -201,23 +201,20 @@
   );
 
   // convert charset using iconv module  
-  if (function_exists('iconv') && $from != 'UTF-7' && $to != 'UTF-7')
-    {
+  if (function_exists('iconv') && $from != 'UTF-7' && $to != 'UTF-7') {
     $aliases['GB2312'] = 'GB18030';
     $_iconv = iconv(($aliases[$from] ? $aliases[$from] : $from), ($aliases[$to] ? $aliases[$to] : $to) . "//IGNORE", $str);
-    if ($_iconv !== false)
-      {
+    if ($_iconv !== false) {
         return $_iconv;
-      }
     }
+  }
 
 
   if (is_null($mbstring_loaded))
     $mbstring_loaded = extension_loaded('mbstring');
     
   // convert charset using mbstring module
-  if ($mbstring_loaded)
-    {
+  if ($mbstring_loaded) {
     $aliases['UTF-7'] = 'UTF7-IMAP';
     $aliases['WINDOWS-1257'] = 'ISO-8859-13';
     
@@ -230,45 +227,48 @@
     $mb_to = $aliases[$to] ? $aliases[$to] : $to;
     
     // return if encoding found, string matches encoding and convert succeeded
-    if (in_array($mb_from, $mbstring_list) && in_array($mb_to, $mbstring_list))
-      if (mb_check_encoding($str, $mb_from))
-	if ($out = mb_convert_encoding($str, $mb_to, $mb_from))
-          return $out;
+    if (in_array($mb_from, $mbstring_list) && in_array($mb_to, $mbstring_list)) {
+      if (mb_check_encoding($str, $mb_from) && ($out = mb_convert_encoding($str, $mb_to, $mb_from)))
+        return $out;
     }
+  }
     
   
   if (class_exists('utf8'))
     $conv = new utf8();
 
   // convert string to UTF-8
-  if ($from == 'UTF-7')
-    $str = utf7_to_utf8($str);
-  else if (($from == 'ISO-8859-1') && function_exists('utf8_encode'))
+  if ($from == 'UTF-7') {
+    if ($_str = utf7_to_utf8($str))
+      $str = $_str;
+  }
+  else if (($from == 'ISO-8859-1') && function_exists('utf8_encode')) {
     $str = utf8_encode($str);
-  else if ($from != 'UTF-8' && $conv)
-    {
+  }
+  else if ($from != 'UTF-8' && $conv) {
     $conv->loadCharset($from);
     $str = $conv->strToUtf8($str);
-    }
-  else if ($from != 'UTF-8')
+  }
+  else if ($from != 'UTF-8') {}
     $error = true;
 
   // encode string for output
-  if ($to == 'UTF-7')
+  if ($to == 'UTF-7') {
     return utf8_to_utf7($str);
-  else if ($to == 'ISO-8859-1' && function_exists('utf8_decode'))
+  }
+  else if ($to == 'ISO-8859-1' && function_exists('utf8_decode')) {
     return utf8_decode($str);
-  else if ($to != 'UTF-8' && $conv)
-    {
+  }
+  else if ($to != 'UTF-8' && $conv) {
     $conv->loadCharset($to);
     return $conv->utf8ToStr($str);
-    }
-  else if ($to != 'UTF-8')
+  }
+  else if ($to != 'UTF-8') {
     $error = true;
-
+  }
+  
   // report error
-  if ($error && !$convert_warning)
-    {
+  if ($error && !$convert_warning){
     raise_error(array(
       'code' => 500,
       'type' => 'php',
@@ -277,7 +277,7 @@
       ), true, false);
     
     $convert_warning = true;
-    }
+  }
   
   // return UTF-8 string
   return $str;

_______________________________________________
http://lists.roundcube.net/mailman/listinfo/svn



More information about the Svn mailing list