mirror of
https://github.com/php/php-src.git
synced 2026-04-17 04:51:03 +02:00
Merge branch 'PHP-7.0' into PHP-7.1
* PHP-7.0: Fixed #75317 - UConverter::setDestinationEncoding changes source instead of destinatination
This commit is contained in:
4
NEWS
4
NEWS
@@ -19,6 +19,10 @@ PHP NEWS
|
||||
. Fixed bug #75301 (Exif extension has built in revision version). (Peter
|
||||
Kokot)
|
||||
|
||||
- intl:
|
||||
. Fixed bug #75317 (UConverter::setDestinationEncoding changes source instead
|
||||
of destination). (andrewnester)
|
||||
|
||||
- OCI8:
|
||||
. Fixed valgrind issue. (Tianfang Yang)
|
||||
|
||||
|
||||
@@ -411,7 +411,7 @@ static zend_bool php_converter_set_encoding(php_converter_object *objval,
|
||||
ZEND_BEGIN_ARG_INFO_EX(php_converter_set_encoding_arginfo, 0, ZEND_RETURN_VALUE, 1)
|
||||
ZEND_ARG_INFO(0, encoding)
|
||||
ZEND_END_ARG_INFO();
|
||||
static void php_converter_do_set_encoding(UConverter *cnv, INTERNAL_FUNCTION_PARAMETERS) {
|
||||
static void php_converter_do_set_encoding(UConverter **pcnv, INTERNAL_FUNCTION_PARAMETERS) {
|
||||
php_converter_object *objval = CONV_GET(getThis());
|
||||
char *enc;
|
||||
size_t enc_len;
|
||||
@@ -423,21 +423,21 @@ static void php_converter_do_set_encoding(UConverter *cnv, INTERNAL_FUNCTION_PAR
|
||||
}
|
||||
intl_errors_reset(&objval->error);
|
||||
|
||||
RETURN_BOOL(php_converter_set_encoding(objval, &(objval->src), enc, enc_len));
|
||||
RETURN_BOOL(php_converter_set_encoding(objval, pcnv, enc, enc_len));
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto bool UConverter::setSourceEncoding(string encoding) */
|
||||
static PHP_METHOD(UConverter, setSourceEncoding) {
|
||||
php_converter_object *objval = CONV_GET(getThis());
|
||||
php_converter_do_set_encoding(objval->src, INTERNAL_FUNCTION_PARAM_PASSTHRU);
|
||||
php_converter_do_set_encoding(&(objval->src), INTERNAL_FUNCTION_PARAM_PASSTHRU);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ proto bool UConverter::setDestinationEncoding(string encoding) */
|
||||
static PHP_METHOD(UConverter, setDestinationEncoding) {
|
||||
php_converter_object *objval = CONV_GET(getThis());
|
||||
php_converter_do_set_encoding(objval->dest, INTERNAL_FUNCTION_PARAM_PASSTHRU);
|
||||
php_converter_do_set_encoding(&(objval->dest), INTERNAL_FUNCTION_PARAM_PASSTHRU);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
53
ext/intl/tests/bug75317.phpt
Normal file
53
ext/intl/tests/bug75317.phpt
Normal file
@@ -0,0 +1,53 @@
|
||||
--TEST--
|
||||
Bug #75317 (UConverter::setDestinationEncoding changes source instead of destinatination)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded('intl')) die('skip intl extension is not available');
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
$utf8 = UConverter::getAliases('utf-8')[0];
|
||||
$utf16 = UConverter::getAliases('utf-16')[0];
|
||||
$utf32 = UConverter::getAliases('utf-32')[0];
|
||||
$latin1 = UConverter::getAliases('latin1')[0];
|
||||
|
||||
function printResult($actual, $expected) {
|
||||
var_dump($actual === $expected ? true : "expected: $expected, actual: $actual");
|
||||
}
|
||||
|
||||
// test default values
|
||||
$c = new UConverter();
|
||||
printResult($c->getDestinationEncoding(), $utf8);
|
||||
printResult($c->getSourceEncoding(), $utf8);
|
||||
|
||||
// test constructor args
|
||||
$c = new UConverter('utf-16', 'latin1');
|
||||
printResult($c->getDestinationEncoding(), $utf16);
|
||||
printResult($c->getSourceEncoding(), $latin1);
|
||||
|
||||
// test setters
|
||||
var_dump($c->setDestinationEncoding('utf-8'));
|
||||
var_dump($c->setSourceEncoding('utf-32'));
|
||||
printResult($c->getDestinationEncoding(), $utf8);
|
||||
printResult($c->getSourceEncoding(), $utf32);
|
||||
|
||||
// test invalid inputs dont change values
|
||||
var_dump($c->setDestinationEncoding('foobar') === false);
|
||||
var_dump($c->setSourceEncoding('foobar') === false);
|
||||
printResult($c->getDestinationEncoding(), $utf8);
|
||||
printResult($c->getSourceEncoding(), $utf32);
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(true)
|
||||
Reference in New Issue
Block a user