MFB: Fixed bug #33282 (Re-assignment by reference does not clear the is_ref

flag)
This commit is contained in:
Ilia Alshanetsky 2006-11-07 20:28:40 +00:00
parent 7ebb315ea9
commit d5c7a2d9c6
2 changed files with 20 additions and 5 deletions

19
Zend/tests/bug33282.phpt Normal file
View File

@ -0,0 +1,19 @@
--TEST--
Bug #33282 (Re-assignment by reference does not clear the is_ref flag)
--FILE--
<?php
$a = array(1, 2, 3);
$r = &$a[0];
$r = &$a[1];
$r = &$a[2];
var_dump($a);
?>
--EXPECT--
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
&int(3)
}

View File

@ -434,11 +434,7 @@ static void zend_assign_to_variable_reference(zval **variable_ptr_ptr, zval **va
*variable_ptr_ptr = value_ptr;
value_ptr->refcount++;
variable_ptr->refcount--;
if (variable_ptr->refcount==0) {
zendi_zval_dtor(*variable_ptr);
FREE_ZVAL(variable_ptr);
}
zval_ptr_dtor(&variable_ptr);
} else if (!variable_ptr->is_ref) {
if (variable_ptr_ptr == value_ptr_ptr) {
SEPARATE_ZVAL(variable_ptr_ptr);