Browse Source

Fixed bug #34767 (Zend Engine 1 Compatibility not copying objects correctly)

PHP-5.1
Dmitry Stogov 21 years ago
parent
commit
03cb8e959b
  1. 2
      NEWS
  2. 33
      Zend/tests/bug34767.phpt
  3. 7
      Zend/zend_execute_API.c

2
NEWS

@ -4,6 +4,8 @@ PHP NEWS
- Fixed bug #34905 (Digest authentication does not work with Apache 1). (Ilia)
- Fixed bug #34902 (mysqli::character_set_name() - undefined method). (Tony)
- Fixed bug #34899 (Fixed sqlite extension compile failure). (Ilia)
- Fixed bug #34767 (Zend Engine 1 Compatibility not copying objects correctly).
(Dmitry)
- Fixed bug #33829 (mime_content_type() returns text/plain for gzip and bzip
files). (Derick)
- Fixed bug #34623 (Crash in pdo_mysql on longtext fields). (Ilia)

33
Zend/tests/bug34767.phpt

@ -0,0 +1,33 @@
--TEST--
Bug #34767 (Zend Engine 1 Compatibility not copying objects correctly)
--INI--
zend.ze1_compatibility_mode=1
error_reporting=4095
--FILE--
<?php
$a->y = &new stdClass();
print_r($a);
$b = $a;
$a->y->z = 1;
print_r($b);
?>
--EXPECTF--
Strict Standards: Assigning the return value of new by reference is deprecated in %sbug34767.php on line 2
stdClass Object
(
[y] => stdClass Object
(
)
)
Strict Standards: Implicit cloning object of class 'stdClass' because of 'zend.ze1_compatibility_mode' in %sbug34767.php on line 4
stdClass Object
(
[y] => stdClass Object
(
[z] => 1
)
)

7
Zend/zend_execute_API.c

@ -386,6 +386,13 @@ ZEND_API void _zval_ptr_dtor(zval **zval_ptr ZEND_FILE_LINE_DC)
zval_dtor(*zval_ptr);
safe_free_zval_ptr_rel(*zval_ptr ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_CC);
} else if ((*zval_ptr)->refcount == 1) {
if ((*zval_ptr)->type == IS_OBJECT) {
TSRMLS_FETCH();
if (EG(ze1_compatibility_mode)) {
return;
}
}
(*zval_ptr)->is_ref = 0;
}
}

Loading…
Cancel
Save