ID: 48847
Updated by: [email protected]
Reported By: an0nym at narod dot ru
-Status: Open
+Status: Feedback
Bug Type: Scripting Engine problem
Operating System: *
PHP Version: 5.2.10, 5.3.0
New Comment:
Thank you for your bug report.
Why do you think it should be possible what you are trying to do? The
documentation for debug_backtrace does not describe that it returns a
reference. I am surprised that it is possible to change function
parameters in the error handler, and I don't think it is supported
behavior.
Previous Comments:
------------------------------------------------------------------------
[2009-07-08 08:00:43] an0nym at narod dot ru
Description:
------------
When argument of function or method is defined with type declaration
and
default value and is called with some value of this argument,
debug_backtrace() doesn't reference this argument of function in stack.
When function definition is the same except argument doesn't have
default value, everything goes normal.
Reproduce code:
---------------
<?php function error($message,$number){
$traces=debug_backtrace();
$traces[1]['args'][0]='1';
return TRUE;
}
set_error_handler('error');
function a(anyUndefinedType $a){ // E_RECOVERABLE_ERROR
var_dump($a===1,$a==='1');
}
function b(anyUndefinedType $b=NULL){ // E_RECOVERABLE_ERROR
var_dump($b===1,$b==='1');
}
a(1);
b(1); ?>
Expected result:
----------------
bool(false) bool(true)
bool(false) bool(true)
Actual result:
--------------
bool(false) bool(true)
bool(true) bool(false)
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=48847&edit=1