diff options
Diffstat (limited to 'Zend/tests')
| -rw-r--r-- | Zend/tests/bug50394.phpt | 24 | ||||
| -rw-r--r-- | Zend/tests/call_with_refs.phpt | 18 |
2 files changed, 42 insertions, 0 deletions
diff --git a/Zend/tests/bug50394.phpt b/Zend/tests/bug50394.phpt new file mode 100644 index 0000000000..e6069d3666 --- /dev/null +++ b/Zend/tests/bug50394.phpt @@ -0,0 +1,24 @@ +--TEST-- +Bug #50394: Reference argument converted to value in __call +--FILE-- +<?php +function inc( &$x ) { $x++; } + +class Proxy { + function __call( $name, $args ) { + echo "$name called!\n"; + call_user_func_array( 'inc', $args ); + } +} + +$arg = 1; +$args = array( &$arg ); +$proxy = new Proxy; +call_user_func_array( array( $proxy, 'bar' ), $args ); +call_user_func_array( array( $proxy, 'bar' ), array(&$arg) ); +var_dump($arg); +--EXPECT-- +bar called! +bar called! +int(3) + diff --git a/Zend/tests/call_with_refs.phpt b/Zend/tests/call_with_refs.phpt new file mode 100644 index 0000000000..acad134f87 --- /dev/null +++ b/Zend/tests/call_with_refs.phpt @@ -0,0 +1,18 @@ +--TEST-- +Check call to non-ref function with call-time refs +--FILE-- +<?php +function my_errorhandler($errno,$errormsg) { + global $my_var; + $my_var=0x12345; + echo $errormsg."\n"; + return true; +} +$oldhandler = set_error_handler("my_errorhandler"); +$my_var = str_repeat("A",64); +$data = call_user_func_array("substr_replace",array(&$my_var, new StdClass(),1)); +echo "OK!"; +--EXPECT-- +Object of class stdClass could not be converted to string +Object of class stdClass to string conversion +OK! |
