mirror of
https://github.com/php/php-src.git
synced 2024-11-24 18:34:21 +08:00
parent
63a1801d19
commit
886a50a619
@ -92,7 +92,7 @@ zend_object_value IntlDateFormatter_object_clone(zval *object TSRMLS_DC)
|
||||
|
||||
DATE_FORMAT_METHOD_FETCH_OBJECT_NO_CHECK;
|
||||
|
||||
new_obj_val = IntlDateFormatter_ce_ptr->create_object(IntlDateFormatter_ce_ptr TSRMLS_CC);
|
||||
new_obj_val = IntlDateFormatter_ce_ptr->create_object(Z_OBJCE_P(object) TSRMLS_CC);
|
||||
new_dfo = (IntlDateFormatter_object *)zend_object_store_get_object_by_handle(new_obj_val.handle TSRMLS_CC);
|
||||
/* clone standard parts */
|
||||
zend_objects_clone_members(&new_dfo->zo, new_obj_val, &dfo->zo, handle TSRMLS_CC);
|
||||
|
@ -86,7 +86,7 @@ zend_object_value NumberFormatter_object_clone(zval *object TSRMLS_DC)
|
||||
NumberFormatter_object *nfo, *new_nfo;
|
||||
|
||||
FORMATTER_METHOD_FETCH_OBJECT_NO_CHECK;
|
||||
new_obj_val = NumberFormatter_ce_ptr->create_object(NumberFormatter_ce_ptr TSRMLS_CC);
|
||||
new_obj_val = NumberFormatter_ce_ptr->create_object(Z_OBJCE_P(object) TSRMLS_CC);
|
||||
new_nfo = (NumberFormatter_object *)zend_object_store_get_object_by_handle(new_obj_val.handle TSRMLS_CC);
|
||||
/* clone standard parts */
|
||||
zend_objects_clone_members(&new_nfo->zo, new_obj_val, &nfo->zo, handle TSRMLS_CC);
|
||||
|
@ -84,7 +84,7 @@ zend_object_value MessageFormatter_object_clone(zval *object TSRMLS_DC)
|
||||
MessageFormatter_object *mfo, *new_mfo;
|
||||
|
||||
MSG_FORMAT_METHOD_FETCH_OBJECT_NO_CHECK;
|
||||
new_obj_val = MessageFormatter_ce_ptr->create_object(MessageFormatter_ce_ptr TSRMLS_CC);
|
||||
new_obj_val = MessageFormatter_ce_ptr->create_object(Z_OBJCE_P(object) TSRMLS_CC);
|
||||
new_mfo = (MessageFormatter_object *)zend_object_store_get_object_by_handle(new_obj_val.handle TSRMLS_CC);
|
||||
/* clone standard parts */
|
||||
zend_objects_clone_members(&new_mfo->zo, new_obj_val, &mfo->zo, handle TSRMLS_CC);
|
||||
|
@ -127,7 +127,7 @@ static zend_object_value spoofchecker_clone_obj(zval *object TSRMLS_DC) /* {{{ *
|
||||
sfo = (Spoofchecker_object *) zend_object_store_get_object(object TSRMLS_CC);
|
||||
intl_error_reset(SPOOFCHECKER_ERROR_P(sfo) TSRMLS_CC);
|
||||
|
||||
new_obj_val = Spoofchecker_ce_ptr->create_object(Spoofchecker_ce_ptr TSRMLS_CC);
|
||||
new_obj_val = Spoofchecker_ce_ptr->create_object(Z_OBJCE_P(object) TSRMLS_CC);
|
||||
new_sfo = (Spoofchecker_object *)zend_object_store_get_object_by_handle(new_obj_val.handle TSRMLS_CC);
|
||||
/* clone standard parts */
|
||||
zend_objects_clone_members(&new_sfo->zo, new_obj_val, &sfo->zo, handle TSRMLS_CC);
|
||||
|
33
ext/intl/tests/bug62915-2.phpt
Normal file
33
ext/intl/tests/bug62915-2.phpt
Normal file
@ -0,0 +1,33 @@
|
||||
--TEST--
|
||||
Bug #62915: cloning of several classes is defective
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded('intl'))
|
||||
die('skip intl extension not enabled');
|
||||
--FILE--
|
||||
<?php
|
||||
class A extends IntlDateFormatter {
|
||||
static $ARGS = array("en_US" ,IntlDateFormatter::FULL, IntlDateFormatter::FULL,
|
||||
'America/Los_Angeles', IntlDateFormatter::GREGORIAN);
|
||||
}
|
||||
class B extends NumberFormatter {
|
||||
static $ARGS = array('de_DE', NumberFormatter::DECIMAL);
|
||||
}
|
||||
class C extends MessageFormatter {
|
||||
static $ARGS = array("en_US", "foo");
|
||||
}
|
||||
class D extends Spoofchecker {
|
||||
static $ARGS = array();
|
||||
}
|
||||
|
||||
foreach (range('A', 'D') as $subclass) {
|
||||
$rc = new ReflectionClass($subclass);
|
||||
$obj = $rc->newInstanceArgs($subclass::$ARGS);
|
||||
$clone = clone $obj;
|
||||
var_dump(get_class($clone));
|
||||
}
|
||||
--EXPECT--
|
||||
string(1) "A"
|
||||
string(1) "B"
|
||||
string(1) "C"
|
||||
string(1) "D"
|
@ -162,7 +162,7 @@ static zend_object_value Transliterator_clone_obj( zval *object TSRMLS_DC )
|
||||
|
||||
to_orig = zend_object_store_get_object( object TSRMLS_CC );
|
||||
intl_error_reset( INTL_DATA_ERROR_P( to_orig ) TSRMLS_CC );
|
||||
ret_val = Transliterator_ce_ptr->create_object( Transliterator_ce_ptr TSRMLS_CC );
|
||||
ret_val = Transliterator_ce_ptr->create_object( Z_OBJCE_P( object ) TSRMLS_CC );
|
||||
to_new = zend_object_store_get_object_by_handle( ret_val.handle TSRMLS_CC );
|
||||
|
||||
zend_objects_clone_members( &to_new->zo, ret_val,
|
||||
|
Loading…
Reference in New Issue
Block a user