- MFB: Fixed bug #45089 (__callStatic $name case sensitivity)

This commit is contained in:
Felipe Pena 2008-06-03 19:01:26 +00:00
parent f78b458ecd
commit 737dd4ef6e
6 changed files with 135 additions and 103 deletions

View File

@ -15,6 +15,6 @@ call_user_func(array("Test", "Three"), NULL, 0, false);
Test::Four(5, 6, 7, 8);
--EXPECT--
two() called with 2 arguments
three() called with 3 arguments
four() called with 4 arguments
Two() called with 2 arguments
Three() called with 3 arguments
Four() called with 4 arguments

View File

@ -1999,12 +1999,8 @@ int zend_do_begin_class_member_function_call(znode *class_name, znode *method_na
ZEND_U_EQUAL(Z_TYPE(method_name->u.constant), lcname, Z_UNILEN(method_name->u.constant), ZEND_CONSTRUCTOR_FUNC_NAME, sizeof(ZEND_CONSTRUCTOR_FUNC_NAME)-1)) {
zval_dtor(&method_name->u.constant);
SET_UNUSED(*method_name);
efree(lcname.v);
} else {
efree(Z_USTRVAL(method_name->u.constant));
Z_UNIVAL(method_name->u.constant) = lcname;
Z_UNILEN(method_name->u.constant) = lcname_len;
}
efree(lcname.v);
}
if (class_name->op_type == IS_CONST &&

View File

@ -996,15 +996,11 @@ int zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_cache TS
efree(function_name_lc.v);
}
} else if (calling_scope) {
unsigned int lcname_len;
zstr lcname = zend_u_str_case_fold(Z_TYPE_P(fci->function_name), fname, fname_len, 1, &lcname_len);
if (calling_scope->get_static_method) {
EX(function_state).function = calling_scope->get_static_method(calling_scope, Z_TYPE_P(fci->function_name), lcname, lcname_len TSRMLS_CC);
EX(function_state).function = calling_scope->get_static_method(calling_scope, Z_TYPE_P(fci->function_name), fname, fname_len TSRMLS_CC);
} else {
EX(function_state).function = zend_std_get_static_method(calling_scope, Z_TYPE_P(fci->function_name), lcname, lcname_len TSRMLS_CC);
EX(function_state).function = zend_std_get_static_method(calling_scope, Z_TYPE_P(fci->function_name), fname, fname_len TSRMLS_CC);
}
efree(lcname.v);
if (check_scope_or_static && EX(function_state).function
&& !(EX(function_state).function->common.fn_flags & ZEND_ACC_STATIC)

View File

@ -906,6 +906,10 @@ ZEND_API void zend_std_callstatic_user_call(INTERNAL_FUNCTION_PARAMETERS) /* {{{
ZEND_API zend_function *zend_std_get_static_method(zend_class_entry *ce, zend_uchar type, zstr function_name_strval, int function_name_strlen TSRMLS_DC) /* {{{ */
{
zend_function *fbc = NULL;
zstr lc_function_name;
unsigned int lc_function_name_len;
lc_function_name = zend_u_str_case_fold(type, function_name_strval, function_name_strlen, 0, &lc_function_name_len);
if (function_name_strlen == ce->name_length && ce->constructor) {
zstr lc_class_name;
@ -920,7 +924,9 @@ ZEND_API zend_function *zend_std_get_static_method(zend_class_entry *ce, zend_uc
efree(lc_class_name.v);
}
if (!fbc && zend_u_hash_find(&ce->function_table, type, function_name_strval, function_name_strlen + 1, (void **) &fbc)==FAILURE) {
if (!fbc && zend_u_hash_find(&ce->function_table, type, lc_function_name, function_name_strlen + 1, (void **) &fbc)==FAILURE) {
efree(lc_function_name.v);
if (ce->__call &&
EG(This) &&
Z_OBJ_HT_P(EG(This))->get_class_entry &&
@ -972,6 +978,7 @@ ZEND_API zend_function *zend_std_get_static_method(zend_class_entry *ce, zend_uc
zend_error(E_ERROR, "Call to undefined method %R::%R()", type, class_name, type, function_name_strval);
}
}
efree(lc_function_name.v);
#if MBO_0
/* right now this function is used for non static method lookup too */

View File

@ -1996,7 +1996,7 @@ ZEND_VM_HANDLER(113, ZEND_INIT_STATIC_METHOD_CALL, CONST|VAR, CONST|TMP|VAR|UNUS
}
if(OP2_TYPE != IS_UNUSED) {
zstr function_name_strval;
unsigned int function_name_strlen;
unsigned int function_name_strlen = 0;
zend_free_op free_op2;
zend_uchar function_name_type;
@ -2009,19 +2009,22 @@ ZEND_VM_HANDLER(113, ZEND_INIT_STATIC_METHOD_CALL, CONST|VAR, CONST|TMP|VAR|UNUS
if (Z_TYPE_P(function_name) != IS_STRING && Z_TYPE_P(function_name) != IS_UNICODE) {
zend_error_noreturn(E_ERROR, "Function name must be a string");
} else {
function_name_strval = Z_UNIVAL_P(function_name);
function_name_strlen = Z_UNILEN_P(function_name);
function_name_type = Z_TYPE_P(function_name);
}
function_name_strval = zend_u_str_case_fold(Z_TYPE_P(function_name), Z_UNIVAL_P(function_name), Z_UNILEN_P(function_name), 1, &function_name_strlen);
function_name_type = Z_TYPE_P(function_name);
}
if (ce->get_static_method) {
EX(fbc) = ce->get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
} else {
EX(fbc) = zend_std_get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
if (function_name_strlen) {
if (ce->get_static_method) {
EX(fbc) = ce->get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
} else {
EX(fbc) = zend_std_get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
}
}
if (OP2_TYPE != IS_CONST) {
efree(function_name_strval.v);
FREE_OP2();
}
} else {

View File

@ -2523,7 +2523,7 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HAN
}
if(IS_CONST != IS_UNUSED) {
zstr function_name_strval;
unsigned int function_name_strlen;
unsigned int function_name_strlen = 0;
zend_uchar function_name_type;
@ -2536,19 +2536,22 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HAN
if (Z_TYPE_P(function_name) != IS_STRING && Z_TYPE_P(function_name) != IS_UNICODE) {
zend_error_noreturn(E_ERROR, "Function name must be a string");
} else {
function_name_strval = Z_UNIVAL_P(function_name);
function_name_strlen = Z_UNILEN_P(function_name);
function_name_type = Z_TYPE_P(function_name);
}
function_name_strval = zend_u_str_case_fold(Z_TYPE_P(function_name), Z_UNIVAL_P(function_name), Z_UNILEN_P(function_name), 1, &function_name_strlen);
function_name_type = Z_TYPE_P(function_name);
}
if (ce->get_static_method) {
EX(fbc) = ce->get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
} else {
EX(fbc) = zend_std_get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
if (function_name_strlen) {
if (ce->get_static_method) {
EX(fbc) = ce->get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
} else {
EX(fbc) = zend_std_get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
}
}
if (IS_CONST != IS_CONST) {
efree(function_name_strval.v);
}
} else {
@ -3101,7 +3104,7 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDL
}
if(IS_TMP_VAR != IS_UNUSED) {
zstr function_name_strval;
unsigned int function_name_strlen;
unsigned int function_name_strlen = 0;
zend_free_op free_op2;
zend_uchar function_name_type;
@ -3114,19 +3117,22 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDL
if (Z_TYPE_P(function_name) != IS_STRING && Z_TYPE_P(function_name) != IS_UNICODE) {
zend_error_noreturn(E_ERROR, "Function name must be a string");
} else {
function_name_strval = Z_UNIVAL_P(function_name);
function_name_strlen = Z_UNILEN_P(function_name);
function_name_type = Z_TYPE_P(function_name);
}
function_name_strval = zend_u_str_case_fold(Z_TYPE_P(function_name), Z_UNIVAL_P(function_name), Z_UNILEN_P(function_name), 1, &function_name_strlen);
function_name_type = Z_TYPE_P(function_name);
}
if (ce->get_static_method) {
EX(fbc) = ce->get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
} else {
EX(fbc) = zend_std_get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
if (function_name_strlen) {
if (ce->get_static_method) {
EX(fbc) = ce->get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
} else {
EX(fbc) = zend_std_get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
}
}
if (IS_TMP_VAR != IS_CONST) {
efree(function_name_strval.v);
zval_dtor(free_op2.var);
}
} else {
@ -3570,7 +3576,7 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDL
}
if(IS_VAR != IS_UNUSED) {
zstr function_name_strval;
unsigned int function_name_strlen;
unsigned int function_name_strlen = 0;
zend_free_op free_op2;
zend_uchar function_name_type;
@ -3583,19 +3589,22 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDL
if (Z_TYPE_P(function_name) != IS_STRING && Z_TYPE_P(function_name) != IS_UNICODE) {
zend_error_noreturn(E_ERROR, "Function name must be a string");
} else {
function_name_strval = Z_UNIVAL_P(function_name);
function_name_strlen = Z_UNILEN_P(function_name);
function_name_type = Z_TYPE_P(function_name);
}
function_name_strval = zend_u_str_case_fold(Z_TYPE_P(function_name), Z_UNIVAL_P(function_name), Z_UNILEN_P(function_name), 1, &function_name_strlen);
function_name_type = Z_TYPE_P(function_name);
}
if (ce->get_static_method) {
EX(fbc) = ce->get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
} else {
EX(fbc) = zend_std_get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
if (function_name_strlen) {
if (ce->get_static_method) {
EX(fbc) = ce->get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
} else {
EX(fbc) = zend_std_get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
}
}
if (IS_VAR != IS_CONST) {
efree(function_name_strval.v);
if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
}
} else {
@ -3795,7 +3804,7 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HA
}
if(IS_UNUSED != IS_UNUSED) {
zstr function_name_strval;
unsigned int function_name_strlen;
unsigned int function_name_strlen = 0;
zend_uchar function_name_type;
@ -3808,19 +3817,22 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HA
if (Z_TYPE_P(function_name) != IS_STRING && Z_TYPE_P(function_name) != IS_UNICODE) {
zend_error_noreturn(E_ERROR, "Function name must be a string");
} else {
function_name_strval = Z_UNIVAL_P(function_name);
function_name_strlen = Z_UNILEN_P(function_name);
function_name_type = Z_TYPE_P(function_name);
}
function_name_strval = zend_u_str_case_fold(Z_TYPE_P(function_name), Z_UNIVAL_P(function_name), Z_UNILEN_P(function_name), 1, &function_name_strlen);
function_name_type = Z_TYPE_P(function_name);
}
if (ce->get_static_method) {
EX(fbc) = ce->get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
} else {
EX(fbc) = zend_std_get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
if (function_name_strlen) {
if (ce->get_static_method) {
EX(fbc) = ce->get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
} else {
EX(fbc) = zend_std_get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
}
}
if (IS_UNUSED != IS_CONST) {
efree(function_name_strval.v);
}
} else {
@ -4232,7 +4244,7 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLE
}
if(IS_CV != IS_UNUSED) {
zstr function_name_strval;
unsigned int function_name_strlen;
unsigned int function_name_strlen = 0;
zend_uchar function_name_type;
@ -4245,19 +4257,22 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLE
if (Z_TYPE_P(function_name) != IS_STRING && Z_TYPE_P(function_name) != IS_UNICODE) {
zend_error_noreturn(E_ERROR, "Function name must be a string");
} else {
function_name_strval = Z_UNIVAL_P(function_name);
function_name_strlen = Z_UNILEN_P(function_name);
function_name_type = Z_TYPE_P(function_name);
}
function_name_strval = zend_u_str_case_fold(Z_TYPE_P(function_name), Z_UNIVAL_P(function_name), Z_UNILEN_P(function_name), 1, &function_name_strlen);
function_name_type = Z_TYPE_P(function_name);
}
if (ce->get_static_method) {
EX(fbc) = ce->get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
} else {
EX(fbc) = zend_std_get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
if (function_name_strlen) {
if (ce->get_static_method) {
EX(fbc) = ce->get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
} else {
EX(fbc) = zend_std_get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
}
}
if (IS_CV != IS_CONST) {
efree(function_name_strval.v);
}
} else {
@ -10463,7 +10478,7 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDL
}
if(IS_CONST != IS_UNUSED) {
zstr function_name_strval;
unsigned int function_name_strlen;
unsigned int function_name_strlen = 0;
zend_uchar function_name_type;
@ -10476,19 +10491,22 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDL
if (Z_TYPE_P(function_name) != IS_STRING && Z_TYPE_P(function_name) != IS_UNICODE) {
zend_error_noreturn(E_ERROR, "Function name must be a string");
} else {
function_name_strval = Z_UNIVAL_P(function_name);
function_name_strlen = Z_UNILEN_P(function_name);
function_name_type = Z_TYPE_P(function_name);
}
function_name_strval = zend_u_str_case_fold(Z_TYPE_P(function_name), Z_UNIVAL_P(function_name), Z_UNILEN_P(function_name), 1, &function_name_strlen);
function_name_type = Z_TYPE_P(function_name);
}
if (ce->get_static_method) {
EX(fbc) = ce->get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
} else {
EX(fbc) = zend_std_get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
if (function_name_strlen) {
if (ce->get_static_method) {
EX(fbc) = ce->get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
} else {
EX(fbc) = zend_std_get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
}
}
if (IS_CONST != IS_CONST) {
efree(function_name_strval.v);
}
} else {
@ -12351,7 +12369,7 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER
}
if(IS_TMP_VAR != IS_UNUSED) {
zstr function_name_strval;
unsigned int function_name_strlen;
unsigned int function_name_strlen = 0;
zend_free_op free_op2;
zend_uchar function_name_type;
@ -12364,19 +12382,22 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER
if (Z_TYPE_P(function_name) != IS_STRING && Z_TYPE_P(function_name) != IS_UNICODE) {
zend_error_noreturn(E_ERROR, "Function name must be a string");
} else {
function_name_strval = Z_UNIVAL_P(function_name);
function_name_strlen = Z_UNILEN_P(function_name);
function_name_type = Z_TYPE_P(function_name);
}
function_name_strval = zend_u_str_case_fold(Z_TYPE_P(function_name), Z_UNIVAL_P(function_name), Z_UNILEN_P(function_name), 1, &function_name_strlen);
function_name_type = Z_TYPE_P(function_name);
}
if (ce->get_static_method) {
EX(fbc) = ce->get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
} else {
EX(fbc) = zend_std_get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
if (function_name_strlen) {
if (ce->get_static_method) {
EX(fbc) = ce->get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
} else {
EX(fbc) = zend_std_get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
}
}
if (IS_TMP_VAR != IS_CONST) {
efree(function_name_strval.v);
zval_dtor(free_op2.var);
}
} else {
@ -14209,7 +14230,7 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER
}
if(IS_VAR != IS_UNUSED) {
zstr function_name_strval;
unsigned int function_name_strlen;
unsigned int function_name_strlen = 0;
zend_free_op free_op2;
zend_uchar function_name_type;
@ -14222,19 +14243,22 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER
if (Z_TYPE_P(function_name) != IS_STRING && Z_TYPE_P(function_name) != IS_UNICODE) {
zend_error_noreturn(E_ERROR, "Function name must be a string");
} else {
function_name_strval = Z_UNIVAL_P(function_name);
function_name_strlen = Z_UNILEN_P(function_name);
function_name_type = Z_TYPE_P(function_name);
}
function_name_strval = zend_u_str_case_fold(Z_TYPE_P(function_name), Z_UNIVAL_P(function_name), Z_UNILEN_P(function_name), 1, &function_name_strlen);
function_name_type = Z_TYPE_P(function_name);
}
if (ce->get_static_method) {
EX(fbc) = ce->get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
} else {
EX(fbc) = zend_std_get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
if (function_name_strlen) {
if (ce->get_static_method) {
EX(fbc) = ce->get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
} else {
EX(fbc) = zend_std_get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
}
}
if (IS_VAR != IS_CONST) {
efree(function_name_strval.v);
if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
}
} else {
@ -15165,7 +15189,7 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HAND
}
if(IS_UNUSED != IS_UNUSED) {
zstr function_name_strval;
unsigned int function_name_strlen;
unsigned int function_name_strlen = 0;
zend_uchar function_name_type;
@ -15178,19 +15202,22 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HAND
if (Z_TYPE_P(function_name) != IS_STRING && Z_TYPE_P(function_name) != IS_UNICODE) {
zend_error_noreturn(E_ERROR, "Function name must be a string");
} else {
function_name_strval = Z_UNIVAL_P(function_name);
function_name_strlen = Z_UNILEN_P(function_name);
function_name_type = Z_TYPE_P(function_name);
}
function_name_strval = zend_u_str_case_fold(Z_TYPE_P(function_name), Z_UNIVAL_P(function_name), Z_UNILEN_P(function_name), 1, &function_name_strlen);
function_name_type = Z_TYPE_P(function_name);
}
if (ce->get_static_method) {
EX(fbc) = ce->get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
} else {
EX(fbc) = zend_std_get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
if (function_name_strlen) {
if (ce->get_static_method) {
EX(fbc) = ce->get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
} else {
EX(fbc) = zend_std_get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
}
}
if (IS_UNUSED != IS_CONST) {
efree(function_name_strval.v);
}
} else {
@ -16673,7 +16700,7 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_
}
if(IS_CV != IS_UNUSED) {
zstr function_name_strval;
unsigned int function_name_strlen;
unsigned int function_name_strlen = 0;
zend_uchar function_name_type;
@ -16686,19 +16713,22 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_
if (Z_TYPE_P(function_name) != IS_STRING && Z_TYPE_P(function_name) != IS_UNICODE) {
zend_error_noreturn(E_ERROR, "Function name must be a string");
} else {
function_name_strval = Z_UNIVAL_P(function_name);
function_name_strlen = Z_UNILEN_P(function_name);
function_name_type = Z_TYPE_P(function_name);
}
function_name_strval = zend_u_str_case_fold(Z_TYPE_P(function_name), Z_UNIVAL_P(function_name), Z_UNILEN_P(function_name), 1, &function_name_strlen);
function_name_type = Z_TYPE_P(function_name);
}
if (ce->get_static_method) {
EX(fbc) = ce->get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
} else {
EX(fbc) = zend_std_get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
if (function_name_strlen) {
if (ce->get_static_method) {
EX(fbc) = ce->get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
} else {
EX(fbc) = zend_std_get_static_method(ce, function_name_type, function_name_strval, function_name_strlen TSRMLS_CC);
}
}
if (IS_CV != IS_CONST) {
efree(function_name_strval.v);
}
} else {