- Fixed #44098, imap_utf8() returns only capital letters

This commit is contained in:
Pierre Joye 2010-02-07 13:06:54 +00:00
parent e37ba52900
commit c58f63a38a
5 changed files with 29 additions and 7 deletions

3
NEWS
View File

@ -69,7 +69,8 @@ PHP NEWS
- Fixed bug #47281 ($php_errormsg is limited in size of characters)
(Oracle Corp.)
- Fixed bug #44827 (define() allows :: in constant names). (Ilia)
- Fixed bug #44098 (imap_utf8() returns only capital letters).
(steffen at dislabs dot de, Pierre)
?? ??? 20??, PHP 5.3.2
- Upgraded bundled sqlite to version 3.6.21. (Ilia)

View File

@ -147,23 +147,23 @@ if test "$PHP_IMAP" != "no"; then
old_CFLAGS=$CFLAGS
CFLAGS="-I$IMAP_INC_DIR"
AC_CACHE_CHECK(for U8T_CANONICAL, ac_cv_u8t_canonical,
AC_CACHE_CHECK(for U8T_DECOMPOSE, ac_cv_u8t_canonical,
AC_TRY_COMPILE([
#include <c-client.h>
],[
int i = U8T_CANONICAL;
],[
ac_cv_u8t_canonical=yes
ac_cv_u8t_decompose=yes
],[
ac_cv_u8t_canonical=no
ac_cv_u8t_decompose=no
])
)
CFLAGS=$old_CFLAGS
if test "$ac_cv_u8t_canonical" = "no" && test "$ac_cv_utf8_mime2text" = "new"; then
if test "$ac_cv_u8t_decompose" = "no" && test "$ac_cv_utf8_mime2text" = "new"; then
AC_MSG_ERROR([utf8_mime2text() has new signature, but U8T_CANONICAL is missing. This should not happen. Check config.log for additional information.])
fi
if test "$ac_cv_u8t_canonical" = "yes" && test "$ac_cv_utf8_mime2text" = "old"; then
if test "$ac_cv_u8t_decompose" = "yes" && test "$ac_cv_utf8_mime2text" = "old"; then
AC_MSG_ERROR([utf8_mime2text() has old signature, but U8T_CANONICAL is present. This should not happen. Check config.log for additional information.])
fi

View File

@ -21,6 +21,7 @@ if (PHP_IMAP == "yes") {
AC_DEFINE('HAVE_NEW_MIME2TEXT', 1, 'Have utf8_mime2text', true);
AC_DEFINE('HAVE_RFC822_OUTPUT_ADDRESS_LIST', 1, 'Have rfc822_output_address_list', true);
AC_DEFINE('HAVE_IMAP_MUTF7', 1, 'Have modified utf7 support', true);
AC_DEFINE('HAVE_NEW_MIME2TEXT', 1, 'Whether utf8_mime2text() has new signature');
} else {
WARNING("imap not enabled; libraries and headers not found");
}

View File

@ -2664,7 +2664,7 @@ PHP_FUNCTION(imap_utf8)
#ifndef HAVE_NEW_MIME2TEXT
utf8_mime2text(&src, &dest);
#else
utf8_mime2text(&src, &dest, U8T_CANONICAL);
utf8_mime2text(&src, &dest, U8T_DECOMPOSE);
#endif
RETVAL_STRINGL(dest.data, dest.size, 1);
if (dest.data) {

View File

@ -0,0 +1,20 @@
--TEST--
Bug #44098 (imap_utf8() returns only capital letters)
--SKIPIF--
<?php
if (!extension_loaded("imap")) {
die("skip imap extension not available");
}
?>
--FILE--
<?php
$exp = 'Luzon®14 dot CoM';
$res = imap_utf8('=?iso-8859-1?b?THV6b26uMTQ=?= dot CoM');
if ($res != $exp) {
echo "failed: got <$res>, expected <exp>\n";
} else {
echo "ok";
}
?>
--EXPECT--
ok