logo       
Google Custom Search
    AddThis Social Bookmark Button
-->

cvs: ZendEngine2(PHP_5_3) / zend_object_handlers.c /tests bug42937.phpt: msg#00036

Subject: cvs: ZendEngine2(PHP_5_3) / zend_object_handlers.c /tests bug42937.phpt
dmitry          Mon Nov 12 09:12:06 2007 UTC

  Added files:                 (Branch: PHP_5_3)
    /ZendEngine2/tests  bug42937.phpt 

  Modified files:              
    /ZendEngine2        zend_object_handlers.c 
  Log:
  Fixed bug #42937 (__call() method not invoked when methods are called on 
parent from child class).
  
  
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_object_handlers.c?r1=1.135.2.6.2.22.2.5&r2=1.135.2.6.2.22.2.6&diff_format=u
Index: ZendEngine2/zend_object_handlers.c
diff -u ZendEngine2/zend_object_handlers.c:1.135.2.6.2.22.2.5 
ZendEngine2/zend_object_handlers.c:1.135.2.6.2.22.2.6
--- ZendEngine2/zend_object_handlers.c:1.135.2.6.2.22.2.5       Fri Nov  2 
19:40:38 2007
+++ ZendEngine2/zend_object_handlers.c  Mon Nov 12 09:12:06 2007
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: zend_object_handlers.c,v 1.135.2.6.2.22.2.5 2007/11/02 19:40:38 jani 
Exp $ */
+/* $Id: zend_object_handlers.c,v 1.135.2.6.2.22.2.6 2007/11/12 09:12:06 dmitry 
Exp $ */
 
 #include "zend.h"
 #include "zend_globals.h"
@@ -894,7 +894,25 @@
        zend_function *fbc;
 
        if (zend_hash_find(&ce->function_table, function_name_strval, 
function_name_strlen + 1, (void **) &fbc)==FAILURE) {
-               if (ce->__callstatic) {
+               if (ce->__call &&
+                   EG(This) &&
+                   Z_OBJ_HT_P(EG(This))->get_class_entry &&
+                   instanceof_function(Z_OBJCE_P(EG(This)), ce TSRMLS_CC)) {
+                       zend_internal_function *call_user_call = 
emalloc(sizeof(zend_internal_function));
+
+                       call_user_call->type = ZEND_INTERNAL_FUNCTION;
+                       call_user_call->module = ce->module;
+                       call_user_call->handler = zend_std_call_user_call;
+                       call_user_call->arg_info = NULL;
+                       call_user_call->num_args = 0;
+                       call_user_call->scope = ce;
+                       call_user_call->fn_flags = 0;
+                       call_user_call->function_name = 
estrndup(function_name_strval, function_name_strlen);
+                       call_user_call->pass_rest_by_reference = 0;
+                       call_user_call->return_reference = ZEND_RETURN_VALUE;
+
+                       return (union _zend_function *)call_user_call;
+               } else if (ce->__callstatic) {
                        zend_internal_function *callstatic_user_call = 
emalloc(sizeof(zend_internal_function));
 
                        callstatic_user_call->type     = ZEND_INTERNAL_FUNCTION;

http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/bug42937.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/bug42937.phpt
+++ ZendEngine2/tests/bug42937.phpt

-- 
Zend Engine CVS Mailing List (http://cvs.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




<Prev in Thread] Current Thread [Next in Thread>