From f070da7c27e151353efd6dd7a639418991f73c7c Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Sun, 22 Feb 2015 05:47:14 -0500
Subject: [PATCH] Fix fatal errors on systems without mbstring extension or mb_regex_encoding() function (#1490280)

---
 CHANGELOG                           |    1 +
 program/lib/Roundcube/bootstrap.php |    6 ++++--
 program/include/iniset.php          |   11 +++++++----
 3 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 38cf044..92b8016 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -11,6 +11,7 @@
 - Fix handling of some improper constructs in format=flowed text as per the RFC3676[4.5] (#1490284)
 - Fix performance of rcube_db_mysql::get_variable()
 - Fix missing or not up-to-date CATEGORIES entry in vCard export (#1490277)
+- Fix fatal errors on systems without mbstring extension or mb_regex_encoding() function (#1490280)
 
 RELEASE 1.1.0
 -------------
diff --git a/program/include/iniset.php b/program/include/iniset.php
index ca1e6ad..d91b314 100644
--- a/program/include/iniset.php
+++ b/program/include/iniset.php
@@ -68,11 +68,14 @@
 // backward compatybility (to be removed)
 require_once INSTALL_PATH . 'program/include/bc.php';
 
-// load the UTF-8 portablity layer from Patchwork
-if (!function_exists('iconv') || !function_exists('utf8_encode') || !extension_loaded('mbstring')) {
-    \Patchwork\Utf8\Bootup::initAll();
+// load the UTF-8 portability layers from Patchwork
+// don't load mbstring layer as it conflicts with Roundcube Framework (#1490280)
+if (!function_exists('iconv')) {
+    \Patchwork\Utf8\Bootup::initIconv();
 }
-
+if (!function_exists('utf8_encode')) {
+    \Patchwork\Utf8\Bootup::initUtf8Encode();
+}
 
 /**
  * PHP5 autoloader routine for dynamic class loading
diff --git a/program/lib/Roundcube/bootstrap.php b/program/lib/Roundcube/bootstrap.php
index 24c1f86..0c950dc 100644
--- a/program/lib/Roundcube/bootstrap.php
+++ b/program/lib/Roundcube/bootstrap.php
@@ -78,9 +78,11 @@
 }
 
 // set internal encoding for mbstring extension
-if (extension_loaded('mbstring')) {
+if (function_exists('mb_internal_encoding')) {
     mb_internal_encoding(RCUBE_CHARSET);
-    @mb_regex_encoding(RCUBE_CHARSET);
+}
+if (function_exists('mb_regex_encoding')) {
+    mb_regex_encoding(RCUBE_CHARSET);
 }
 
 // make sure the Roundcube lib directory is in the include_path

--
Gitblit v1.9.1