]> granicus.if.org Git - php/commitdiff
- MFH some changes (from last fix on 5.3+)
authorFelipe Pena <felipe@php.net>
Fri, 12 Jun 2009 21:33:46 +0000 (21:33 +0000)
committerFelipe Pena <felipe@php.net>
Fri, 12 Jun 2009 21:33:46 +0000 (21:33 +0000)
- Constified method_name arg in zend_get_user_call_function()

Zend/zend_object_handlers.c

index 7217fb7b2802a9308a3430357674e28e45d51f4a..d56c263d5a61d8ebaf6acb655b4ba75318e60dbf 100644 (file)
@@ -762,15 +762,15 @@ static inline zend_class_entry * zend_get_function_root_class(zend_function *fbc
 }
 
 
-static inline union _zend_function *zend_get_user_call_function(zend_object *zobj, char *method_name, int method_len) /* {{{ */
+static inline union _zend_function *zend_get_user_call_function(zend_class_entry *ce, const char *method_name, int method_len) /* {{{ */
 {
        zend_internal_function *call_user_call = emalloc(sizeof(zend_internal_function));
        call_user_call->type = ZEND_INTERNAL_FUNCTION;
-       call_user_call->module = zobj->ce->module;
+       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 = zobj->ce;
+       call_user_call->scope = ce;
        call_user_call->fn_flags = 0;
        call_user_call->function_name = estrndup(method_name, method_len);
        call_user_call->pass_rest_by_reference = 0;
@@ -796,7 +796,7 @@ static union _zend_function *zend_std_get_method(zval **object_ptr, char *method
        if (zend_hash_find(&zobj->ce->function_table, lc_method_name, method_len+1, (void **)&fbc) == FAILURE) {
                free_alloca_with_limit(lc_method_name, use_heap);
                if (zobj->ce->__call) {
-                       return zend_get_user_call_function(zobj, method_name, method_len);
+                       return zend_get_user_call_function(zobj->ce, method_name, method_len);
                } else {
                        return NULL;
                }
@@ -814,7 +814,7 @@ static union _zend_function *zend_std_get_method(zval **object_ptr, char *method
                        fbc = updated_fbc;
                } else {
                        if (zobj->ce->__call) {
-                               fbc = zend_get_user_call_function(zobj, method_name, method_len);
+                               fbc = zend_get_user_call_function(zobj->ce, method_name, method_len);
                        } else {
                                zend_error(E_ERROR, "Call to %s method %s::%s() from context '%s'", zend_visibility_string(fbc->common.fn_flags), ZEND_FN_SCOPE_NAME(fbc), method_name, EG(scope) ? EG(scope)->name : "");
                        }
@@ -840,7 +840,7 @@ static union _zend_function *zend_std_get_method(zval **object_ptr, char *method
                         */
                        if (!zend_check_protected(zend_get_function_root_class(fbc), EG(scope))) {
                                if (zobj->ce->__call) {
-                                       fbc = zend_get_user_call_function(zobj, method_name, method_len);
+                                       fbc = zend_get_user_call_function(zobj->ce, method_name, method_len);
                                } else {
                                        zend_error(E_ERROR, "Call to %s method %s::%s() from context '%s'", zend_visibility_string(fbc->common.fn_flags), ZEND_FN_SCOPE_NAME(fbc), method_name, EG(scope) ? EG(scope)->name : "");
                                }
@@ -868,20 +868,7 @@ ZEND_API zend_function *zend_std_get_static_method(zend_class_entry *ce, char *f
                    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;
+                       return zend_get_user_call_function(ce, function_name_strval, function_name_strlen);
                } else {
                        char *class_name = ce->name;