From: Dmitry Stogov Date: Fri, 25 Jul 2008 09:48:36 +0000 (+0000) Subject: Fixed support for static methods X-Git-Tag: BEFORE_HEAD_NS_CHANGE~1054 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c96256bcaf246d7c079e33917d90f847db8592e7;p=php Fixed support for static methods --- diff --git a/ext/pdo/pdo_stmt.c b/ext/pdo/pdo_stmt.c index 897775f0e5..8d79061138 100755 --- a/ext/pdo/pdo_stmt.c +++ b/ext/pdo/pdo_stmt.c @@ -850,7 +850,7 @@ static int make_callable_ex(pdo_stmt_t *stmt, zval *callable, zend_fcall_info * 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; diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index 170585a841..d38fe66024 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -2434,7 +2434,7 @@ ZEND_METHOD(reflection_method, invoke) */ 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); @@ -2465,7 +2465,7 @@ ZEND_METHOD(reflection_method, invoke) 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); @@ -2538,7 +2538,7 @@ ZEND_METHOD(reflection_method, invokeArgs) */ if (mptr->common.fn_flags & ZEND_ACC_STATIC) { object = NULL; - obj_ce = NULL; + obj_ce = mptr->common.scope; } else { if (!object) { efree(params); @@ -2570,8 +2570,8 @@ ZEND_METHOD(reflection_method, invokeArgs) 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);