fcc->initialized = 1;
fcc->function_handler = function_handler;
fcc->calling_scope = EG(scope);
- fcc->called_scope = Z_OBJCE_PP(object);
+ fcc->called_scope = object ? Z_OBJCE_PP(object) : NULL;
fcc->object_pp = object;
return 1;
*/
if (mptr->common.fn_flags & ZEND_ACC_STATIC) {
object_pp = NULL;
- obj_ce = NULL;
+ obj_ce = mptr->common.scope;
} else {
if ((Z_TYPE_PP(params[0]) != IS_OBJECT)) {
efree(params);
fcc.initialized = 1;
fcc.function_handler = mptr;
fcc.calling_scope = obj_ce;
- fcc.called_scope = Z_OBJCE_PP(object_pp);
+ fcc.called_scope = obj_ce;
fcc.object_pp = object_pp;
result = zend_call_function(&fci, &fcc TSRMLS_CC);
*/
if (mptr->common.fn_flags & ZEND_ACC_STATIC) {
object = NULL;
- obj_ce = NULL;
+ obj_ce = mptr->common.scope;
} else {
if (!object) {
efree(params);
fcc.initialized = 1;
fcc.function_handler = mptr;
fcc.calling_scope = obj_ce;
- fcc.called_scope = Z_OBJCE_P(object);
- fcc.object_pp = &object;
+ fcc.called_scope = obj_ce;
+ fcc.object_pp = object ? &object : NULL;
result = zend_call_function(&fci, &fcc TSRMLS_CC);