From 9e147a36adfa6e14ab66ea3b2bcb848eeba2c276 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Sun, 22 Feb 2015 05:47:42 -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 0e0a3e2..4e095b8 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -10,6 +10,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 19a244f..3d5f1fc 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 49b0dd3..5c069d8 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