helly           Sat Aug 16 06:37:14 2003 EDT

  Modified files:              
    /spl        spl_engine.c 
  Log:
  Simplify
  
Index: spl/spl_engine.c
diff -u spl/spl_engine.c:1.13 spl/spl_engine.c:1.14
--- spl/spl_engine.c:1.13       Thu Aug  7 18:43:01 2003
+++ spl/spl_engine.c    Sat Aug 16 06:37:14 2003
@@ -198,28 +198,28 @@
                result = zend_call_function(&fci, NULL TSRMLS_CC);
        } else {
                zend_fcall_info_cache fcic;
-               
-               if (fn_proxy && !*fn_proxy) {
-                       fcic.initialized = 0;
-                       ZVAL_STRINGL(&z_fname, function_name, function_name_len, 0);
-                       result = zend_call_function(&fci, &fcic TSRMLS_CC);
-                       *fn_proxy = fcic.function_handler;
-               } else {
-                       fcic.initialized = 1;
-                       if (!fn_proxy) {
-                               /* this doesn't handle 'function not found' error! */
-                               zend_hash_find(&obj_ce->function_table, function_name, 
function_name_len+1, (void **) &fcic.function_handler);
-                       } else {
-                               fcic.function_handler = *fn_proxy;
+
+               fcic.initialized = 1;
+               if (!obj_ce) {
+                       obj_ce = Z_OBJCE_PP(object_pp);
+               }
+               if (!fn_proxy || !*fn_proxy) {
+                       if (zend_hash_find(&obj_ce->function_table, function_name, 
function_name_len+1, (void **) &fcic.function_handler) == FAILURE) {
+                               zend_error(E_CORE_ERROR, "Couldn't find implementation 
for method %s::%s\n", obj_ce->name, function_name);
                        }
-                       fcic.calling_scope = obj_ce;
-                       fcic.object_pp = object_pp;
-                       result = zend_call_function(&fci, &fcic TSRMLS_CC);
+                       if (fn_proxy) {
+                               *fn_proxy = fcic.function_handler;
+                       }
+               } else {
+                       fcic.function_handler = *fn_proxy;
                }
+               fcic.calling_scope = obj_ce;
+               fcic.object_pp = object_pp;
+               result = zend_call_function(&fci, &fcic TSRMLS_CC);
        }
-       if (!retval_ptr && fci.retval_ptr_ptr) {
-               zval_dtor(*fci.retval_ptr_ptr);
-               FREE_ZVAL(*fci.retval_ptr_ptr);
+       if (!retval_ptr && retval) {
+               zval_dtor(retval);
+               FREE_ZVAL(retval);
        }
        return result;
 }



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

Reply via email to