mirror of
https://github.com/php/php-src.git
synced 2026-03-29 03:32:20 +02:00
MFH: Fix bug #44487 (call_user_method_array issues a warning when throwing an exception).
This commit is contained in:
2
NEWS
2
NEWS
@@ -18,6 +18,8 @@ PHP NEWS
|
||||
again...). (Felipe)
|
||||
- Fixed bug #41828 (Failing to call RecursiveIteratorIterator::__construct()
|
||||
causes a sefault). (Etienne)
|
||||
- Fixed bug #44487 (call_user_method_array issues a warning when throwing
|
||||
an exception). (David Soria Parra)
|
||||
|
||||
06 Mar 2008, PHP 5.2.6RC2
|
||||
- Fixed bug #44333 (SEGFAULT when using mysql_pconnect() with client_flags).
|
||||
|
||||
@@ -5219,8 +5219,10 @@ PHP_FUNCTION(call_user_method)
|
||||
SEPARATE_ZVAL(params[0]);
|
||||
convert_to_string(*params[0]);
|
||||
|
||||
if (call_user_function_ex(EG(function_table), params[1], *params[0], &retval_ptr, arg_count-2, params+2, 0, NULL TSRMLS_CC) == SUCCESS && retval_ptr) {
|
||||
COPY_PZVAL_TO_ZVAL(*return_value, retval_ptr);
|
||||
if (call_user_function_ex(EG(function_table), params[1], *params[0], &retval_ptr, arg_count-2, params+2, 0, NULL TSRMLS_CC) == SUCCESS) {
|
||||
if (retval_ptr) {
|
||||
COPY_PZVAL_TO_ZVAL(*return_value, retval_ptr);
|
||||
}
|
||||
} else {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to call %s()", Z_STRVAL_PP(params[0]));
|
||||
}
|
||||
@@ -5261,8 +5263,10 @@ PHP_FUNCTION(call_user_method_array)
|
||||
element++;
|
||||
}
|
||||
|
||||
if (call_user_function_ex(EG(function_table), obj, *method_name, &retval_ptr, num_elems, method_args, 0, NULL TSRMLS_CC) == SUCCESS && retval_ptr) {
|
||||
COPY_PZVAL_TO_ZVAL(*return_value, retval_ptr);
|
||||
if (call_user_function_ex(EG(function_table), obj, *method_name, &retval_ptr, num_elems, method_args, 0, NULL TSRMLS_CC) == SUCCESS) {
|
||||
if (retval_ptr) {
|
||||
COPY_PZVAL_TO_ZVAL(*return_value, retval_ptr);
|
||||
}
|
||||
} else {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to call %s()", Z_STRVAL_PP(method_name));
|
||||
}
|
||||
|
||||
24
ext/standard/tests/general_functions/bug44487.phpt
Normal file
24
ext/standard/tests/general_functions/bug44487.phpt
Normal file
@@ -0,0 +1,24 @@
|
||||
--TEST--
|
||||
Bug #44487 (call_user_method_array issues a warning when throwing an exception)
|
||||
--INI--
|
||||
error_reporting = E_ALL & ~E_DEPRECATED
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
class Foo
|
||||
{
|
||||
public function test()
|
||||
{
|
||||
print 'test';
|
||||
throw new Exception();
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$bar = new Foo();
|
||||
call_user_method_array('test', $bar, array()) ;
|
||||
} catch (Exception $e) {
|
||||
}
|
||||
?>
|
||||
--EXPECT--
|
||||
test
|
||||
Reference in New Issue
Block a user