summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Pena <felipe@php.net>2008-06-15 18:27:37 +0000
committerFelipe Pena <felipe@php.net>2008-06-15 18:27:37 +0000
commit639d221df3ba639f4b7f0df29c4cdf9b83c100c7 (patch)
tree1f309950b8b456792040e971c3e70224805d7619
parent04e257a8e1556ac7f5673217b24d99708bdf3802 (diff)
downloadphp-git-639d221df3ba639f4b7f0df29c4cdf9b83c100c7.tar.gz
- Improved warning message to call-time pass-by-reference when used with internal function
(http://news.php.net/php.internals/38252)
-rw-r--r--Zend/zend_compile.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index da0757bb97..8580e35bef 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -2019,14 +2019,19 @@ void zend_do_pass_param(znode *param, zend_uchar op, int offset TSRMLS_DC)
zend_stack_top(&CG(function_call_stack), (void **) &function_ptr_ptr);
function_ptr = *function_ptr_ptr;
- if (original_op==ZEND_SEND_REF
- && !CG(allow_call_time_pass_reference)) {
- zend_error(E_DEPRECATED,
- "Call-time pass-by-reference has been deprecated; "
- "If you would like to pass it by reference, modify the declaration of %s(). "
- "If you would like to enable call-time pass-by-reference, you can set "
- "allow_call_time_pass_reference to true in your INI file",
- (function_ptr ? function_ptr->common.function_name : "[runtime function name]"));
+ if (original_op == ZEND_SEND_REF && !CG(allow_call_time_pass_reference)) {
+ if (function_ptr &&
+ function_ptr->common.function_name &&
+ function_ptr->common.type == ZEND_USER_FUNCTION &&
+ !ARG_SHOULD_BE_SENT_BY_REF(function_ptr, (zend_uint) offset)) {
+ zend_error(E_DEPRECATED,
+ "Call-time pass-by-reference has been deprecated; "
+ "If you would like to pass it by reference, modify the declaration of %s(). "
+ "If you would like to enable call-time pass-by-reference, you can set "
+ "allow_call_time_pass_reference to true in your INI file", function_ptr->common.function_name);
+ } else {
+ zend_error(E_DEPRECATED, "Call-time pass-by-reference has been deprecated");
+ }
}
if (function_ptr) {