]> granicus.if.org Git - php/commitdiff
- MF5.3: Improved warning message to call-time pass-by-reference when used with inter...
authorFelipe Pena <felipe@php.net>
Sun, 15 Jun 2008 18:31:10 +0000 (18:31 +0000)
committerFelipe Pena <felipe@php.net>
Sun, 15 Jun 2008 18:31:10 +0000 (18:31 +0000)
  (http://news.php.net/php.internals/38252)

Zend/zend_compile.c

index 1bd3a4079a42bb62fafc4934206c6cc90e99ca3e..ea59a921447bba19fcc4130fc62f6d4ae3226cc7 100644 (file)
@@ -1587,14 +1587,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_COMPILE_WARNING,
-                                       "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_COMPILE_WARNING,
+                                               "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_COMPILE_WARNING, "Call-time pass-by-reference has been deprecated");
+               }
        }
 
        if (function_ptr) {