diff options
| author | Dmitry Stogov <dmitry@php.net> | 2008-01-29 10:45:19 +0000 |
|---|---|---|
| committer | Dmitry Stogov <dmitry@php.net> | 2008-01-29 10:45:19 +0000 |
| commit | 5d1e742056b44754ae32441ce66d79995baebd18 (patch) | |
| tree | 09dd9fe95cd63602d64c18ead2c2247a3d8ca0ae | |
| parent | a2b707fcd7cb207c49243a791c254dcdd2465b49 (diff) | |
| download | php-git-5d1e742056b44754ae32441ce66d79995baebd18.tar.gz | |
Fixed bug #43505 (Assign by reference bug)
| -rw-r--r-- | ext/standard/array.c | 2 | ||||
| -rw-r--r-- | ext/standard/tests/array/bug43505.phpt | 43 |
2 files changed, 44 insertions, 1 deletions
diff --git a/ext/standard/array.c b/ext/standard/array.c index 390012c107..bf472e10a2 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -324,7 +324,7 @@ PHP_FUNCTION(count) if (Z_OBJ_HT_P(array)->get_class_entry && instanceof_function(Z_OBJCE_P(array), spl_ce_Countable TSRMLS_CC)) { zend_call_method_with_0_params(&array, NULL, NULL, "count", &retval); if (retval) { - convert_to_long(retval); + convert_to_long_ex(&retval); RETVAL_LONG(Z_LVAL_P(retval)); zval_ptr_dtor(&retval); } diff --git a/ext/standard/tests/array/bug43505.phpt b/ext/standard/tests/array/bug43505.phpt new file mode 100644 index 0000000000..72d26b6ea4 --- /dev/null +++ b/ext/standard/tests/array/bug43505.phpt @@ -0,0 +1,43 @@ +--TEST-- +Bug #43505 (Assign by reference bug) +--INI-- +error_reporting=0 +--FILE-- +<?php +class Test implements Countable { + public function count() { + return $some; + } +} + +$obj = new Test(); + +$a = array(); +$b =& $a['test']; +var_dump($a); + +$t = count($obj); + +$a = array(); +$b =& $a['test']; +var_dump($a); +?> +--EXPECT-- +array(1) { + ["test"]=> + &NULL +} +array(1) { + ["test"]=> + &NULL +} +--UEXPECT-- +array(1) { + [u"test"]=> + &NULL +} +array(1) { + [u"test"]=> + &NULL +} + |
