]> granicus.if.org Git - php/commitdiff
check class_entry of this_ptr in Reflection API, so we won't get an alien this_ptr
authorAntony Dovgal <tony2001@php.net>
Fri, 16 Sep 2005 20:20:46 +0000 (20:20 +0000)
committerAntony Dovgal <tony2001@php.net>
Fri, 16 Sep 2005 20:20:46 +0000 (20:20 +0000)
when called statically in a function that is called statically too (without being
declared as static)

Zend/zend_reflection_api.c
ext/reflection/php_reflection.c

index 1685997e49ec2b2e6492cbbf47d49acaa98305b2..dec1f9d7d64b5173370954e68d7ed68600bb25b6 100644 (file)
@@ -41,13 +41,14 @@ zend_class_entry *reflection_property_ptr;
 zend_class_entry *reflection_extension_ptr;
 
 /* Method macros */
-#define METHOD_NOTSTATIC                                                                                    \
-       if (!this_ptr) {                                                                                        \
-               zend_error(E_ERROR, "%v() cannot be called statically", get_active_function_name(TSRMLS_C));        \
+
+#define METHOD_NOTSTATIC(ce)                                                                                \
+       if (!this_ptr || !instanceof_function(Z_OBJCE_P(this_ptr), ce TSRMLS_CC)) {                             \
+               zend_error(E_ERROR, "%s() cannot be called statically", get_active_function_name(TSRMLS_C));        \
                return;                                                                                             \
        }                                                                                                       \
 
-#define METHOD_NOTSTATIC_NUMPARAMS(c) METHOD_NOTSTATIC                                                      \
+#define METHOD_NOTSTATIC_NUMPARAMS(ce, c) METHOD_NOTSTATIC(ce)                                              \
        if (ZEND_NUM_ARGS() > c) {                                                                              \
                ZEND_WRONG_PARAM_COUNT();                                                                           \
        }                                                                                                       \
@@ -872,7 +873,7 @@ static void _function_check_flag(INTERNAL_FUNCTION_PARAMETERS, int mask)
        reflection_object *intern;
        zend_function *mptr;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_method_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(mptr);
        RETURN_BOOL(mptr->common.fn_flags & mask);
 }
@@ -1272,7 +1273,7 @@ ZEND_METHOD(reflection_function, __toString)
        zend_function *fptr;
        string str;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(fptr);
        string_init(&str);
        _function_string(&str, fptr, "" TSRMLS_CC);
@@ -1284,7 +1285,7 @@ ZEND_METHOD(reflection_function, __toString)
    Returns this function's name */
 ZEND_METHOD(reflection, function_getName)
 {
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
        _default_get_entry(getThis(), "name", sizeof("name"), return_value TSRMLS_CC);
 }
 /* }}} */
@@ -1296,7 +1297,7 @@ ZEND_METHOD(reflection, function_isInternal)
        reflection_object *intern;
        zend_function *fptr;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(fptr);
        RETURN_BOOL(fptr->type == ZEND_INTERNAL_FUNCTION);
 }
@@ -1309,7 +1310,7 @@ ZEND_METHOD(reflection_function, isUserDefined)
        reflection_object *intern;
        zend_function *fptr;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(fptr);
        RETURN_BOOL(fptr->type == ZEND_USER_FUNCTION);
 }
@@ -1322,7 +1323,7 @@ ZEND_METHOD(reflection_function, getFileName)
        reflection_object *intern;
        zend_function *fptr;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(fptr);
        if (fptr->type == ZEND_USER_FUNCTION) {
                RETURN_STRING(fptr->op_array.filename, 1);
@@ -1338,7 +1339,7 @@ ZEND_METHOD(reflection_function, getStartLine)
        reflection_object *intern;
        zend_function *fptr;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(fptr);
        if (fptr->type == ZEND_USER_FUNCTION) {
                RETURN_LONG(fptr->op_array.line_start);
@@ -1354,7 +1355,7 @@ ZEND_METHOD(reflection_function, getEndLine)
        reflection_object *intern;
        zend_function *fptr;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(fptr);
        if (fptr->type == ZEND_USER_FUNCTION) {
                RETURN_LONG(fptr->op_array.line_end);
@@ -1370,7 +1371,7 @@ ZEND_METHOD(reflection_function, getDocComment)
        reflection_object *intern;
        zend_function *fptr;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(fptr);
        if (fptr->type == ZEND_USER_FUNCTION && fptr->op_array.doc_comment) {
                RETURN_STRINGL(fptr->op_array.doc_comment, fptr->op_array.doc_comment_len, 1);
@@ -1387,7 +1388,7 @@ ZEND_METHOD(reflection_function, getStaticVariables)
        reflection_object *intern;
        zend_function *fptr;
        
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(fptr);
 
        /* Return an empty array in case no static variables exist */
@@ -1412,7 +1413,7 @@ ZEND_METHOD(reflection_function, invoke)
        reflection_object *intern;
        zend_function *fptr;
        
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_function_ptr);
        GET_REFLECTION_OBJECT_PTR(fptr);
 
        params = safe_emalloc(sizeof(zval **), argc, 0);
@@ -1472,7 +1473,7 @@ ZEND_METHOD(reflection_function, invokeArgs)
        zend_function *fptr;
        zval *param_array;
        
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_function_ptr);
        GET_REFLECTION_OBJECT_PTR(fptr);
 
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a", &param_array) == FAILURE) {
@@ -1523,7 +1524,7 @@ ZEND_METHOD(reflection_function, returnsReference)
        reflection_object *intern;
        zend_function *fptr;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_function_ptr);
        GET_REFLECTION_OBJECT_PTR(fptr);
 
        RETURN_BOOL(fptr->op_array.return_reference);
@@ -1537,7 +1538,7 @@ ZEND_METHOD(reflection_function, getNumberOfParameters)
        reflection_object *intern;
        zend_function *fptr;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_function_ptr);
        GET_REFLECTION_OBJECT_PTR(fptr);
 
        RETURN_LONG(fptr->common.num_args);
@@ -1551,7 +1552,7 @@ ZEND_METHOD(reflection_function, getNumberOfRequiredParameters)
        reflection_object *intern;
        zend_function *fptr;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_function_ptr);
        GET_REFLECTION_OBJECT_PTR(fptr);
 
        RETURN_LONG(fptr->common.required_num_args);
@@ -1567,7 +1568,7 @@ ZEND_METHOD(reflection_function, getParameters)
        zend_uint i;
        struct _zend_arg_info *arg_info;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_function_ptr);
        GET_REFLECTION_OBJECT_PTR(fptr);
 
        arg_info= fptr->common.arg_info;
@@ -1593,7 +1594,7 @@ ZEND_METHOD(reflection_function, getExtension)
        zend_function *fptr;
        zend_internal_function *internal;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_function_ptr);
        GET_REFLECTION_OBJECT_PTR(fptr);
 
        if (fptr->type != ZEND_INTERNAL_FUNCTION) {
@@ -1617,7 +1618,7 @@ ZEND_METHOD(reflection_function, getExtensionName)
        zend_function *fptr;
        zend_internal_function *internal;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_function_ptr);
        GET_REFLECTION_OBJECT_PTR(fptr);
 
        if (fptr->type != ZEND_INTERNAL_FUNCTION) {
@@ -1778,7 +1779,7 @@ ZEND_METHOD(reflection_parameter, __toString)
        parameter_reference *param;
        string str;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(param);
        string_init(&str);
        _parameter_string(&str, param->fptr, param->arg_info, param->offset, param->required, "" TSRMLS_CC);
@@ -1790,7 +1791,7 @@ ZEND_METHOD(reflection_parameter, __toString)
    Returns this parameters's name */
 ZEND_METHOD(reflection_parameter, getName)
 {
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
        _default_get_entry(getThis(), "name", sizeof("name"), return_value TSRMLS_CC);
 }
 /* }}} */
@@ -1802,7 +1803,7 @@ ZEND_METHOD(reflection_parameter, getClass)
        reflection_object *intern;
        parameter_reference *param;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(param);
 
        if (!param->arg_info->class_name) {
@@ -1831,7 +1832,7 @@ ZEND_METHOD(reflection_parameter, isArray)
        reflection_object *intern;
        parameter_reference *param;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(param);
 
        RETVAL_BOOL(param->arg_info->array_type_hint);
@@ -1845,7 +1846,7 @@ ZEND_METHOD(reflection_parameter, allowsNull)
        reflection_object *intern;
        parameter_reference *param;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(param);
 
        RETVAL_BOOL(param->arg_info->allow_null);
@@ -1859,7 +1860,7 @@ ZEND_METHOD(reflection_parameter, isPassedByReference)
        reflection_object *intern;
        parameter_reference *param;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(param);
 
        RETVAL_BOOL(param->arg_info->pass_by_reference);
@@ -1873,7 +1874,7 @@ ZEND_METHOD(reflection_parameter, isOptional)
        reflection_object *intern;
        parameter_reference *param;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(param);
 
        RETVAL_BOOL(param->offset >= param->required);
@@ -1888,7 +1889,7 @@ ZEND_METHOD(reflection_parameter, isDefaultValueAvailable)
        parameter_reference *param;
        zend_op *precv;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(param);
 
        if (param->fptr->type != ZEND_USER_FUNCTION)
@@ -1915,7 +1916,7 @@ ZEND_METHOD(reflection_parameter, getDefaultValue)
        zend_op *precv;
        zval *zv, zv_copy;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(param);
 
        if (param->fptr->type != ZEND_USER_FUNCTION)
@@ -2027,7 +2028,7 @@ ZEND_METHOD(reflection_method, __toString)
        zend_function *mptr;
        string str;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_method_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(mptr);
        string_init(&str);
        _function_string(&str, mptr, "" TSRMLS_CC);
@@ -2050,7 +2051,7 @@ ZEND_METHOD(reflection_method, invoke)
        zend_fcall_info_cache fcc;
        zend_class_entry *obj_ce;
        
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_method_ptr);
 
        if (argc < 1) {
                zend_error(E_WARNING, "Invoke() expects at least one parameter, none given");
@@ -2154,7 +2155,7 @@ ZEND_METHOD(reflection_method, invokeArgs)
        zend_class_entry *obj_ce;
        zval *param_array;
        
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_method_ptr);
 
        GET_REFLECTION_OBJECT_PTR(mptr);
 
@@ -2297,7 +2298,7 @@ ZEND_METHOD(reflection_method, isConstructor)
        reflection_object *intern;
        zend_function *mptr;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_method_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(mptr);
        /* we need to check if the ctor is the ctor of the class level we we 
         * looking at since we might be looking at an inherited old style ctor
@@ -2313,7 +2314,7 @@ ZEND_METHOD(reflection_method, isDestructor)
        reflection_object *intern;
        zend_function *mptr;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_method_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(mptr);
        RETURN_BOOL(mptr->common.fn_flags & ZEND_ACC_DTOR);
 }
@@ -2326,7 +2327,7 @@ ZEND_METHOD(reflection_method, getModifiers)
        reflection_object *intern;
        zend_function *mptr;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_method_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(mptr);
 
        RETURN_LONG(mptr->common.fn_flags);
@@ -2340,7 +2341,7 @@ ZEND_METHOD(reflection_method, getDeclaringClass)
        reflection_object *intern;
        zend_function *mptr;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_method_ptr);
        GET_REFLECTION_OBJECT_PTR(mptr);
 
        zend_reflection_class_factory(mptr->common.scope, return_value TSRMLS_CC);
@@ -2424,7 +2425,7 @@ ZEND_METHOD(reflection_class, getStaticProperties)
        reflection_object *intern;
        zend_class_entry *ce;
        
-       METHOD_NOTSTATIC_NUMPARAMS(0);  
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);    
        GET_REFLECTION_OBJECT_PTR(ce);
 
        zend_update_class_constants(ce TSRMLS_CC);
@@ -2512,7 +2513,7 @@ ZEND_METHOD(reflection_class, getDefaultProperties)
        zend_class_entry *ce;
        int count;
        
-       METHOD_NOTSTATIC_NUMPARAMS(0);  
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);    
        GET_REFLECTION_OBJECT_PTR(ce);
        array_init(return_value);
 
@@ -2558,7 +2559,7 @@ ZEND_METHOD(reflection_class, __toString)
        zend_class_entry *ce;
        string str;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ce);
        string_init(&str);
        _class_string(&str, ce, intern->obj, "" TSRMLS_CC);
@@ -2570,7 +2571,7 @@ ZEND_METHOD(reflection_class, __toString)
    Returns the class' name */
 ZEND_METHOD(reflection_class, getName)
 {
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
        _default_get_entry(getThis(), "name", sizeof("name"), return_value TSRMLS_CC);
 }
 /* }}} */
@@ -2582,7 +2583,7 @@ ZEND_METHOD(reflection_class, isInternal)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ce);
        RETURN_BOOL(ce->type == ZEND_INTERNAL_CLASS);
 }
@@ -2595,7 +2596,7 @@ ZEND_METHOD(reflection_class, isUserDefined)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ce);
        RETURN_BOOL(ce->type == ZEND_USER_CLASS);
 }
@@ -2608,7 +2609,7 @@ ZEND_METHOD(reflection_class, getFileName)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ce);
        if (ce->type == ZEND_USER_CLASS) {
                RETURN_STRING(ce->filename, 1);
@@ -2624,7 +2625,7 @@ ZEND_METHOD(reflection_class, getStartLine)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ce);
        if (ce->type == ZEND_USER_FUNCTION) {
                RETURN_LONG(ce->line_start);
@@ -2640,7 +2641,7 @@ ZEND_METHOD(reflection_class, getEndLine)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ce);
        if (ce->type == ZEND_USER_CLASS) {
                RETURN_LONG(ce->line_end);
@@ -2656,7 +2657,7 @@ ZEND_METHOD(reflection_class, getDocComment)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ce);
        if (ce->type == ZEND_USER_CLASS && ce->doc_comment) {
                RETURN_STRINGL(ce->doc_comment, ce->doc_comment_len, 1);
@@ -2672,7 +2673,7 @@ ZEND_METHOD(reflection_class, getConstructor)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);  
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);    
        GET_REFLECTION_OBJECT_PTR(ce);
 
        if (ce->constructor) {
@@ -2694,7 +2695,7 @@ ZEND_METHOD(reflection_class, hasMethod)
        int name_len;
        zend_uchar type;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_class_ptr);
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "t", &name, &name_len, &type) == FAILURE) {
                return;
        }
@@ -2723,7 +2724,7 @@ ZEND_METHOD(reflection_class, getMethod)
        int name_len;
        zend_uchar type;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_class_ptr);
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "t", &name, &name_len, &type) == FAILURE) {
                return;
        }
@@ -2769,7 +2770,7 @@ ZEND_METHOD(reflection_class, getMethods)
        long filter = 0;
        int argc = ZEND_NUM_ARGS();
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_class_ptr);
        if (argc) {
                if (zend_parse_parameters(argc TSRMLS_CC, "|l", &filter) == FAILURE) {
                        return;
@@ -2796,7 +2797,7 @@ ZEND_METHOD(reflection_class, hasProperty)
        int name_len;
        zval *property;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_class_ptr);
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == FAILURE) {
                return;
        }
@@ -2831,7 +2832,7 @@ ZEND_METHOD(reflection_class, getProperty)
        int name_len;
        zend_uchar name_type;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_class_ptr);
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "t", &name, &name_len, &name_type) == FAILURE) {
                return;
        }
@@ -2878,7 +2879,7 @@ ZEND_METHOD(reflection_class, getProperties)
        long filter = 0;
        int argc = ZEND_NUM_ARGS();
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_class_ptr);
        if (argc) {
                if (zend_parse_parameters(argc TSRMLS_CC, "|l", &filter) == FAILURE) {
                        return;
@@ -2904,7 +2905,7 @@ ZEND_METHOD(reflection_class, hasConstant)
        char *name;
        int name_len;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_class_ptr);
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == FAILURE) {
                return;
        }
@@ -2926,7 +2927,7 @@ ZEND_METHOD(reflection_class, getConstants)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);  
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);    
        GET_REFLECTION_OBJECT_PTR(ce);
        array_init(return_value);
        zend_hash_apply_with_argument(&ce->constants_table, (apply_func_arg_t) zval_update_constant, (void*)1 TSRMLS_CC);
@@ -2944,7 +2945,7 @@ ZEND_METHOD(reflection_class, getConstant)
        char *name; 
        int name_len;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_class_ptr);
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == FAILURE) {
                return;
        }
@@ -2965,7 +2966,7 @@ static void _class_check_flag(INTERNAL_FUNCTION_PARAMETERS, int mask)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ce);
        RETVAL_BOOL(ce->ce_flags & mask);
 }
@@ -2978,7 +2979,7 @@ ZEND_METHOD(reflection_class, isInstantiable)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ce);
        if (ce->ce_flags & (ZEND_ACC_INTERFACE | ZEND_ACC_EXPLICIT_ABSTRACT_CLASS | ZEND_ACC_IMPLICIT_ABSTRACT_CLASS)) {
                RETURN_FALSE;
@@ -3025,7 +3026,7 @@ ZEND_METHOD(reflection_class, getModifiers)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ce);
 
        RETURN_LONG(ce->ce_flags);
@@ -3040,7 +3041,7 @@ ZEND_METHOD(reflection_class, isInstance)
        zend_class_entry *ce;
        zval *object;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_class_ptr);
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", &object) == FAILURE) {
                return;
        }
@@ -3058,7 +3059,7 @@ ZEND_METHOD(reflection_class, newInstance)
        zend_class_entry *ce;
        int argc = ZEND_NUM_ARGS();
        
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_class_ptr);
        GET_REFLECTION_OBJECT_PTR(ce);
 
        object_init_ex(return_value, ce);
@@ -3116,7 +3117,7 @@ ZEND_METHOD(reflection_class, getInterfaces)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ce);
 
        /* Return an empty array if this class implements no interfaces */
@@ -3142,7 +3143,7 @@ ZEND_METHOD(reflection_class, getParentClass)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ce);
        
        if (ce->parent) {
@@ -3161,7 +3162,7 @@ ZEND_METHOD(reflection_class, isSubclassOf)
        zend_class_entry *ce, **pce, *class_ce;
        zval *class_name;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_class_ptr);
        GET_REFLECTION_OBJECT_PTR(ce);
 
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &class_name) == FAILURE) {
@@ -3208,7 +3209,7 @@ ZEND_METHOD(reflection_class, implementsInterface)
        zend_class_entry *ce, *interface_ce, **pce;
        zval *interface;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_class_ptr);
        GET_REFLECTION_OBJECT_PTR(ce);
 
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &interface) == FAILURE) {
@@ -3258,7 +3259,7 @@ ZEND_METHOD(reflection_class, isIterateable)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_class_ptr);
        GET_REFLECTION_OBJECT_PTR(ce);
 
        RETURN_BOOL(ce->get_iterator != NULL);
@@ -3272,7 +3273,7 @@ ZEND_METHOD(reflection_class, getExtension)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_class_ptr);
        GET_REFLECTION_OBJECT_PTR(ce);
 
        if (ce->module) {
@@ -3288,7 +3289,7 @@ ZEND_METHOD(reflection_class, getExtensionName)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_class_ptr);
        GET_REFLECTION_OBJECT_PTR(ce);
 
        if (ce->module) {
@@ -3417,7 +3418,7 @@ ZEND_METHOD(reflection_property, __toString)
        property_reference *ref;
        string str;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_property_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ref);
        string_init(&str);
        _property_string(&str, ref->prop, NULL, "" TSRMLS_CC);
@@ -3429,7 +3430,7 @@ ZEND_METHOD(reflection_property, __toString)
    Returns the class' name */
 ZEND_METHOD(reflection_property, getName)
 {
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_property_ptr, 0);
        _default_get_entry(getThis(), "name", sizeof("name"), return_value TSRMLS_CC);
 }
 /* }}} */
@@ -3439,7 +3440,7 @@ static void _property_check_flag(INTERNAL_FUNCTION_PARAMETERS, int mask)
        reflection_object *intern;
        property_reference *ref;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_property_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ref);
        RETURN_BOOL(ref->prop->flags & mask);
 }
@@ -3491,7 +3492,7 @@ ZEND_METHOD(reflection_property, getModifiers)
        reflection_object *intern;
        property_reference *ref;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_property_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ref);
 
        RETURN_LONG(ref->prop->flags);
@@ -3508,7 +3509,7 @@ ZEND_METHOD(reflection_property, getValue)
        zval **member= NULL;
        zend_uchar utype = UG(unicode)?IS_UNICODE:IS_STRING;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_property_ptr);
        GET_REFLECTION_OBJECT_PTR(ref);
 
        if (!(ref->prop->flags & ZEND_ACC_PUBLIC)) {
@@ -3552,7 +3553,7 @@ ZEND_METHOD(reflection_property, setValue)
        HashTable *prop_table;
        zend_uchar utype = UG(unicode)?IS_UNICODE:IS_STRING;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_property_ptr);
        GET_REFLECTION_OBJECT_PTR(ref);
 
        if (ref->prop->flags & ~(ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)) {
@@ -3611,7 +3612,7 @@ ZEND_METHOD(reflection_property, getDeclaringClass)
        reflection_object *intern;
        property_reference *ref;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_property_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ref);
 
        zend_reflection_class_factory(ref->ce, return_value TSRMLS_CC);
@@ -3624,7 +3625,7 @@ ZEND_METHOD(reflection_property, getDocComment)
        reflection_object *intern;
        property_reference *ref;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_property_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ref);
        if (ref->prop->doc_comment) {
                RETURN_STRINGL(ref->prop->doc_comment, ref->prop->doc_comment_len, 1);
@@ -3687,7 +3688,7 @@ ZEND_METHOD(reflection_extension, __toString)
        zend_module_entry *module;
        string str;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_extension_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(module);
        string_init(&str);
        _extension_string(&str, module, "" TSRMLS_CC);
@@ -3699,7 +3700,7 @@ ZEND_METHOD(reflection_extension, __toString)
    Returns this extension's name */
 ZEND_METHOD(reflection_extension, getName)
 {
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_extension_ptr, 0);
        _default_get_entry(getThis(), "name", sizeof("name"), return_value TSRMLS_CC);
 }
 /* }}} */
@@ -3711,7 +3712,7 @@ ZEND_METHOD(reflection_extension, getVersion)
        reflection_object *intern;
        zend_module_entry *module;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_extension_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(module);
 
        /* An extension does not necessarily have a version number */
@@ -3730,7 +3731,7 @@ ZEND_METHOD(reflection_extension, getFunctions)
        reflection_object *intern;
        zend_module_entry *module;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_extension_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(module);
 
        array_init(return_value);
@@ -3778,7 +3779,7 @@ ZEND_METHOD(reflection_extension, getConstants)
        reflection_object *intern;
        zend_module_entry *module;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);  
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_extension_ptr, 0);        
        GET_REFLECTION_OBJECT_PTR(module);
 
        array_init(return_value);
@@ -3810,7 +3811,7 @@ ZEND_METHOD(reflection_extension, getINIEntries)
        reflection_object *intern;
        zend_module_entry *module;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);  
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_extension_ptr, 0);        
        GET_REFLECTION_OBJECT_PTR(module);
 
        array_init(return_value);
@@ -3846,7 +3847,7 @@ ZEND_METHOD(reflection_extension, getClasses)
        reflection_object *intern;
        zend_module_entry *module;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);  
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_extension_ptr, 0);        
        GET_REFLECTION_OBJECT_PTR(module);
 
        array_init(return_value);
@@ -3861,7 +3862,7 @@ ZEND_METHOD(reflection_extension, getClassNames)
        reflection_object *intern;
        zend_module_entry *module;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);  
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_extension_ptr, 0);        
        GET_REFLECTION_OBJECT_PTR(module);
 
        array_init(return_value);
index 1685997e49ec2b2e6492cbbf47d49acaa98305b2..dec1f9d7d64b5173370954e68d7ed68600bb25b6 100644 (file)
@@ -41,13 +41,14 @@ zend_class_entry *reflection_property_ptr;
 zend_class_entry *reflection_extension_ptr;
 
 /* Method macros */
-#define METHOD_NOTSTATIC                                                                                    \
-       if (!this_ptr) {                                                                                        \
-               zend_error(E_ERROR, "%v() cannot be called statically", get_active_function_name(TSRMLS_C));        \
+
+#define METHOD_NOTSTATIC(ce)                                                                                \
+       if (!this_ptr || !instanceof_function(Z_OBJCE_P(this_ptr), ce TSRMLS_CC)) {                             \
+               zend_error(E_ERROR, "%s() cannot be called statically", get_active_function_name(TSRMLS_C));        \
                return;                                                                                             \
        }                                                                                                       \
 
-#define METHOD_NOTSTATIC_NUMPARAMS(c) METHOD_NOTSTATIC                                                      \
+#define METHOD_NOTSTATIC_NUMPARAMS(ce, c) METHOD_NOTSTATIC(ce)                                              \
        if (ZEND_NUM_ARGS() > c) {                                                                              \
                ZEND_WRONG_PARAM_COUNT();                                                                           \
        }                                                                                                       \
@@ -872,7 +873,7 @@ static void _function_check_flag(INTERNAL_FUNCTION_PARAMETERS, int mask)
        reflection_object *intern;
        zend_function *mptr;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_method_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(mptr);
        RETURN_BOOL(mptr->common.fn_flags & mask);
 }
@@ -1272,7 +1273,7 @@ ZEND_METHOD(reflection_function, __toString)
        zend_function *fptr;
        string str;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(fptr);
        string_init(&str);
        _function_string(&str, fptr, "" TSRMLS_CC);
@@ -1284,7 +1285,7 @@ ZEND_METHOD(reflection_function, __toString)
    Returns this function's name */
 ZEND_METHOD(reflection, function_getName)
 {
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
        _default_get_entry(getThis(), "name", sizeof("name"), return_value TSRMLS_CC);
 }
 /* }}} */
@@ -1296,7 +1297,7 @@ ZEND_METHOD(reflection, function_isInternal)
        reflection_object *intern;
        zend_function *fptr;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(fptr);
        RETURN_BOOL(fptr->type == ZEND_INTERNAL_FUNCTION);
 }
@@ -1309,7 +1310,7 @@ ZEND_METHOD(reflection_function, isUserDefined)
        reflection_object *intern;
        zend_function *fptr;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(fptr);
        RETURN_BOOL(fptr->type == ZEND_USER_FUNCTION);
 }
@@ -1322,7 +1323,7 @@ ZEND_METHOD(reflection_function, getFileName)
        reflection_object *intern;
        zend_function *fptr;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(fptr);
        if (fptr->type == ZEND_USER_FUNCTION) {
                RETURN_STRING(fptr->op_array.filename, 1);
@@ -1338,7 +1339,7 @@ ZEND_METHOD(reflection_function, getStartLine)
        reflection_object *intern;
        zend_function *fptr;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(fptr);
        if (fptr->type == ZEND_USER_FUNCTION) {
                RETURN_LONG(fptr->op_array.line_start);
@@ -1354,7 +1355,7 @@ ZEND_METHOD(reflection_function, getEndLine)
        reflection_object *intern;
        zend_function *fptr;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(fptr);
        if (fptr->type == ZEND_USER_FUNCTION) {
                RETURN_LONG(fptr->op_array.line_end);
@@ -1370,7 +1371,7 @@ ZEND_METHOD(reflection_function, getDocComment)
        reflection_object *intern;
        zend_function *fptr;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(fptr);
        if (fptr->type == ZEND_USER_FUNCTION && fptr->op_array.doc_comment) {
                RETURN_STRINGL(fptr->op_array.doc_comment, fptr->op_array.doc_comment_len, 1);
@@ -1387,7 +1388,7 @@ ZEND_METHOD(reflection_function, getStaticVariables)
        reflection_object *intern;
        zend_function *fptr;
        
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_function_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(fptr);
 
        /* Return an empty array in case no static variables exist */
@@ -1412,7 +1413,7 @@ ZEND_METHOD(reflection_function, invoke)
        reflection_object *intern;
        zend_function *fptr;
        
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_function_ptr);
        GET_REFLECTION_OBJECT_PTR(fptr);
 
        params = safe_emalloc(sizeof(zval **), argc, 0);
@@ -1472,7 +1473,7 @@ ZEND_METHOD(reflection_function, invokeArgs)
        zend_function *fptr;
        zval *param_array;
        
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_function_ptr);
        GET_REFLECTION_OBJECT_PTR(fptr);
 
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a", &param_array) == FAILURE) {
@@ -1523,7 +1524,7 @@ ZEND_METHOD(reflection_function, returnsReference)
        reflection_object *intern;
        zend_function *fptr;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_function_ptr);
        GET_REFLECTION_OBJECT_PTR(fptr);
 
        RETURN_BOOL(fptr->op_array.return_reference);
@@ -1537,7 +1538,7 @@ ZEND_METHOD(reflection_function, getNumberOfParameters)
        reflection_object *intern;
        zend_function *fptr;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_function_ptr);
        GET_REFLECTION_OBJECT_PTR(fptr);
 
        RETURN_LONG(fptr->common.num_args);
@@ -1551,7 +1552,7 @@ ZEND_METHOD(reflection_function, getNumberOfRequiredParameters)
        reflection_object *intern;
        zend_function *fptr;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_function_ptr);
        GET_REFLECTION_OBJECT_PTR(fptr);
 
        RETURN_LONG(fptr->common.required_num_args);
@@ -1567,7 +1568,7 @@ ZEND_METHOD(reflection_function, getParameters)
        zend_uint i;
        struct _zend_arg_info *arg_info;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_function_ptr);
        GET_REFLECTION_OBJECT_PTR(fptr);
 
        arg_info= fptr->common.arg_info;
@@ -1593,7 +1594,7 @@ ZEND_METHOD(reflection_function, getExtension)
        zend_function *fptr;
        zend_internal_function *internal;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_function_ptr);
        GET_REFLECTION_OBJECT_PTR(fptr);
 
        if (fptr->type != ZEND_INTERNAL_FUNCTION) {
@@ -1617,7 +1618,7 @@ ZEND_METHOD(reflection_function, getExtensionName)
        zend_function *fptr;
        zend_internal_function *internal;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_function_ptr);
        GET_REFLECTION_OBJECT_PTR(fptr);
 
        if (fptr->type != ZEND_INTERNAL_FUNCTION) {
@@ -1778,7 +1779,7 @@ ZEND_METHOD(reflection_parameter, __toString)
        parameter_reference *param;
        string str;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(param);
        string_init(&str);
        _parameter_string(&str, param->fptr, param->arg_info, param->offset, param->required, "" TSRMLS_CC);
@@ -1790,7 +1791,7 @@ ZEND_METHOD(reflection_parameter, __toString)
    Returns this parameters's name */
 ZEND_METHOD(reflection_parameter, getName)
 {
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
        _default_get_entry(getThis(), "name", sizeof("name"), return_value TSRMLS_CC);
 }
 /* }}} */
@@ -1802,7 +1803,7 @@ ZEND_METHOD(reflection_parameter, getClass)
        reflection_object *intern;
        parameter_reference *param;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(param);
 
        if (!param->arg_info->class_name) {
@@ -1831,7 +1832,7 @@ ZEND_METHOD(reflection_parameter, isArray)
        reflection_object *intern;
        parameter_reference *param;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(param);
 
        RETVAL_BOOL(param->arg_info->array_type_hint);
@@ -1845,7 +1846,7 @@ ZEND_METHOD(reflection_parameter, allowsNull)
        reflection_object *intern;
        parameter_reference *param;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(param);
 
        RETVAL_BOOL(param->arg_info->allow_null);
@@ -1859,7 +1860,7 @@ ZEND_METHOD(reflection_parameter, isPassedByReference)
        reflection_object *intern;
        parameter_reference *param;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(param);
 
        RETVAL_BOOL(param->arg_info->pass_by_reference);
@@ -1873,7 +1874,7 @@ ZEND_METHOD(reflection_parameter, isOptional)
        reflection_object *intern;
        parameter_reference *param;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(param);
 
        RETVAL_BOOL(param->offset >= param->required);
@@ -1888,7 +1889,7 @@ ZEND_METHOD(reflection_parameter, isDefaultValueAvailable)
        parameter_reference *param;
        zend_op *precv;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(param);
 
        if (param->fptr->type != ZEND_USER_FUNCTION)
@@ -1915,7 +1916,7 @@ ZEND_METHOD(reflection_parameter, getDefaultValue)
        zend_op *precv;
        zval *zv, zv_copy;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(param);
 
        if (param->fptr->type != ZEND_USER_FUNCTION)
@@ -2027,7 +2028,7 @@ ZEND_METHOD(reflection_method, __toString)
        zend_function *mptr;
        string str;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_method_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(mptr);
        string_init(&str);
        _function_string(&str, mptr, "" TSRMLS_CC);
@@ -2050,7 +2051,7 @@ ZEND_METHOD(reflection_method, invoke)
        zend_fcall_info_cache fcc;
        zend_class_entry *obj_ce;
        
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_method_ptr);
 
        if (argc < 1) {
                zend_error(E_WARNING, "Invoke() expects at least one parameter, none given");
@@ -2154,7 +2155,7 @@ ZEND_METHOD(reflection_method, invokeArgs)
        zend_class_entry *obj_ce;
        zval *param_array;
        
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_method_ptr);
 
        GET_REFLECTION_OBJECT_PTR(mptr);
 
@@ -2297,7 +2298,7 @@ ZEND_METHOD(reflection_method, isConstructor)
        reflection_object *intern;
        zend_function *mptr;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_method_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(mptr);
        /* we need to check if the ctor is the ctor of the class level we we 
         * looking at since we might be looking at an inherited old style ctor
@@ -2313,7 +2314,7 @@ ZEND_METHOD(reflection_method, isDestructor)
        reflection_object *intern;
        zend_function *mptr;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_method_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(mptr);
        RETURN_BOOL(mptr->common.fn_flags & ZEND_ACC_DTOR);
 }
@@ -2326,7 +2327,7 @@ ZEND_METHOD(reflection_method, getModifiers)
        reflection_object *intern;
        zend_function *mptr;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_method_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(mptr);
 
        RETURN_LONG(mptr->common.fn_flags);
@@ -2340,7 +2341,7 @@ ZEND_METHOD(reflection_method, getDeclaringClass)
        reflection_object *intern;
        zend_function *mptr;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_method_ptr);
        GET_REFLECTION_OBJECT_PTR(mptr);
 
        zend_reflection_class_factory(mptr->common.scope, return_value TSRMLS_CC);
@@ -2424,7 +2425,7 @@ ZEND_METHOD(reflection_class, getStaticProperties)
        reflection_object *intern;
        zend_class_entry *ce;
        
-       METHOD_NOTSTATIC_NUMPARAMS(0);  
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);    
        GET_REFLECTION_OBJECT_PTR(ce);
 
        zend_update_class_constants(ce TSRMLS_CC);
@@ -2512,7 +2513,7 @@ ZEND_METHOD(reflection_class, getDefaultProperties)
        zend_class_entry *ce;
        int count;
        
-       METHOD_NOTSTATIC_NUMPARAMS(0);  
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);    
        GET_REFLECTION_OBJECT_PTR(ce);
        array_init(return_value);
 
@@ -2558,7 +2559,7 @@ ZEND_METHOD(reflection_class, __toString)
        zend_class_entry *ce;
        string str;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ce);
        string_init(&str);
        _class_string(&str, ce, intern->obj, "" TSRMLS_CC);
@@ -2570,7 +2571,7 @@ ZEND_METHOD(reflection_class, __toString)
    Returns the class' name */
 ZEND_METHOD(reflection_class, getName)
 {
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
        _default_get_entry(getThis(), "name", sizeof("name"), return_value TSRMLS_CC);
 }
 /* }}} */
@@ -2582,7 +2583,7 @@ ZEND_METHOD(reflection_class, isInternal)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ce);
        RETURN_BOOL(ce->type == ZEND_INTERNAL_CLASS);
 }
@@ -2595,7 +2596,7 @@ ZEND_METHOD(reflection_class, isUserDefined)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ce);
        RETURN_BOOL(ce->type == ZEND_USER_CLASS);
 }
@@ -2608,7 +2609,7 @@ ZEND_METHOD(reflection_class, getFileName)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ce);
        if (ce->type == ZEND_USER_CLASS) {
                RETURN_STRING(ce->filename, 1);
@@ -2624,7 +2625,7 @@ ZEND_METHOD(reflection_class, getStartLine)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ce);
        if (ce->type == ZEND_USER_FUNCTION) {
                RETURN_LONG(ce->line_start);
@@ -2640,7 +2641,7 @@ ZEND_METHOD(reflection_class, getEndLine)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ce);
        if (ce->type == ZEND_USER_CLASS) {
                RETURN_LONG(ce->line_end);
@@ -2656,7 +2657,7 @@ ZEND_METHOD(reflection_class, getDocComment)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ce);
        if (ce->type == ZEND_USER_CLASS && ce->doc_comment) {
                RETURN_STRINGL(ce->doc_comment, ce->doc_comment_len, 1);
@@ -2672,7 +2673,7 @@ ZEND_METHOD(reflection_class, getConstructor)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);  
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);    
        GET_REFLECTION_OBJECT_PTR(ce);
 
        if (ce->constructor) {
@@ -2694,7 +2695,7 @@ ZEND_METHOD(reflection_class, hasMethod)
        int name_len;
        zend_uchar type;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_class_ptr);
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "t", &name, &name_len, &type) == FAILURE) {
                return;
        }
@@ -2723,7 +2724,7 @@ ZEND_METHOD(reflection_class, getMethod)
        int name_len;
        zend_uchar type;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_class_ptr);
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "t", &name, &name_len, &type) == FAILURE) {
                return;
        }
@@ -2769,7 +2770,7 @@ ZEND_METHOD(reflection_class, getMethods)
        long filter = 0;
        int argc = ZEND_NUM_ARGS();
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_class_ptr);
        if (argc) {
                if (zend_parse_parameters(argc TSRMLS_CC, "|l", &filter) == FAILURE) {
                        return;
@@ -2796,7 +2797,7 @@ ZEND_METHOD(reflection_class, hasProperty)
        int name_len;
        zval *property;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_class_ptr);
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == FAILURE) {
                return;
        }
@@ -2831,7 +2832,7 @@ ZEND_METHOD(reflection_class, getProperty)
        int name_len;
        zend_uchar name_type;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_class_ptr);
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "t", &name, &name_len, &name_type) == FAILURE) {
                return;
        }
@@ -2878,7 +2879,7 @@ ZEND_METHOD(reflection_class, getProperties)
        long filter = 0;
        int argc = ZEND_NUM_ARGS();
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_class_ptr);
        if (argc) {
                if (zend_parse_parameters(argc TSRMLS_CC, "|l", &filter) == FAILURE) {
                        return;
@@ -2904,7 +2905,7 @@ ZEND_METHOD(reflection_class, hasConstant)
        char *name;
        int name_len;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_class_ptr);
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == FAILURE) {
                return;
        }
@@ -2926,7 +2927,7 @@ ZEND_METHOD(reflection_class, getConstants)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);  
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);    
        GET_REFLECTION_OBJECT_PTR(ce);
        array_init(return_value);
        zend_hash_apply_with_argument(&ce->constants_table, (apply_func_arg_t) zval_update_constant, (void*)1 TSRMLS_CC);
@@ -2944,7 +2945,7 @@ ZEND_METHOD(reflection_class, getConstant)
        char *name; 
        int name_len;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_class_ptr);
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == FAILURE) {
                return;
        }
@@ -2965,7 +2966,7 @@ static void _class_check_flag(INTERNAL_FUNCTION_PARAMETERS, int mask)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ce);
        RETVAL_BOOL(ce->ce_flags & mask);
 }
@@ -2978,7 +2979,7 @@ ZEND_METHOD(reflection_class, isInstantiable)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ce);
        if (ce->ce_flags & (ZEND_ACC_INTERFACE | ZEND_ACC_EXPLICIT_ABSTRACT_CLASS | ZEND_ACC_IMPLICIT_ABSTRACT_CLASS)) {
                RETURN_FALSE;
@@ -3025,7 +3026,7 @@ ZEND_METHOD(reflection_class, getModifiers)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ce);
 
        RETURN_LONG(ce->ce_flags);
@@ -3040,7 +3041,7 @@ ZEND_METHOD(reflection_class, isInstance)
        zend_class_entry *ce;
        zval *object;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_class_ptr);
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", &object) == FAILURE) {
                return;
        }
@@ -3058,7 +3059,7 @@ ZEND_METHOD(reflection_class, newInstance)
        zend_class_entry *ce;
        int argc = ZEND_NUM_ARGS();
        
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_class_ptr);
        GET_REFLECTION_OBJECT_PTR(ce);
 
        object_init_ex(return_value, ce);
@@ -3116,7 +3117,7 @@ ZEND_METHOD(reflection_class, getInterfaces)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ce);
 
        /* Return an empty array if this class implements no interfaces */
@@ -3142,7 +3143,7 @@ ZEND_METHOD(reflection_class, getParentClass)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ce);
        
        if (ce->parent) {
@@ -3161,7 +3162,7 @@ ZEND_METHOD(reflection_class, isSubclassOf)
        zend_class_entry *ce, **pce, *class_ce;
        zval *class_name;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_class_ptr);
        GET_REFLECTION_OBJECT_PTR(ce);
 
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &class_name) == FAILURE) {
@@ -3208,7 +3209,7 @@ ZEND_METHOD(reflection_class, implementsInterface)
        zend_class_entry *ce, *interface_ce, **pce;
        zval *interface;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_class_ptr);
        GET_REFLECTION_OBJECT_PTR(ce);
 
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &interface) == FAILURE) {
@@ -3258,7 +3259,7 @@ ZEND_METHOD(reflection_class, isIterateable)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_class_ptr);
        GET_REFLECTION_OBJECT_PTR(ce);
 
        RETURN_BOOL(ce->get_iterator != NULL);
@@ -3272,7 +3273,7 @@ ZEND_METHOD(reflection_class, getExtension)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_class_ptr);
        GET_REFLECTION_OBJECT_PTR(ce);
 
        if (ce->module) {
@@ -3288,7 +3289,7 @@ ZEND_METHOD(reflection_class, getExtensionName)
        reflection_object *intern;
        zend_class_entry *ce;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_class_ptr);
        GET_REFLECTION_OBJECT_PTR(ce);
 
        if (ce->module) {
@@ -3417,7 +3418,7 @@ ZEND_METHOD(reflection_property, __toString)
        property_reference *ref;
        string str;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_property_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ref);
        string_init(&str);
        _property_string(&str, ref->prop, NULL, "" TSRMLS_CC);
@@ -3429,7 +3430,7 @@ ZEND_METHOD(reflection_property, __toString)
    Returns the class' name */
 ZEND_METHOD(reflection_property, getName)
 {
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_property_ptr, 0);
        _default_get_entry(getThis(), "name", sizeof("name"), return_value TSRMLS_CC);
 }
 /* }}} */
@@ -3439,7 +3440,7 @@ static void _property_check_flag(INTERNAL_FUNCTION_PARAMETERS, int mask)
        reflection_object *intern;
        property_reference *ref;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_property_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ref);
        RETURN_BOOL(ref->prop->flags & mask);
 }
@@ -3491,7 +3492,7 @@ ZEND_METHOD(reflection_property, getModifiers)
        reflection_object *intern;
        property_reference *ref;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_property_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ref);
 
        RETURN_LONG(ref->prop->flags);
@@ -3508,7 +3509,7 @@ ZEND_METHOD(reflection_property, getValue)
        zval **member= NULL;
        zend_uchar utype = UG(unicode)?IS_UNICODE:IS_STRING;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_property_ptr);
        GET_REFLECTION_OBJECT_PTR(ref);
 
        if (!(ref->prop->flags & ZEND_ACC_PUBLIC)) {
@@ -3552,7 +3553,7 @@ ZEND_METHOD(reflection_property, setValue)
        HashTable *prop_table;
        zend_uchar utype = UG(unicode)?IS_UNICODE:IS_STRING;
 
-       METHOD_NOTSTATIC;
+       METHOD_NOTSTATIC(reflection_property_ptr);
        GET_REFLECTION_OBJECT_PTR(ref);
 
        if (ref->prop->flags & ~(ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)) {
@@ -3611,7 +3612,7 @@ ZEND_METHOD(reflection_property, getDeclaringClass)
        reflection_object *intern;
        property_reference *ref;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_property_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ref);
 
        zend_reflection_class_factory(ref->ce, return_value TSRMLS_CC);
@@ -3624,7 +3625,7 @@ ZEND_METHOD(reflection_property, getDocComment)
        reflection_object *intern;
        property_reference *ref;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_property_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(ref);
        if (ref->prop->doc_comment) {
                RETURN_STRINGL(ref->prop->doc_comment, ref->prop->doc_comment_len, 1);
@@ -3687,7 +3688,7 @@ ZEND_METHOD(reflection_extension, __toString)
        zend_module_entry *module;
        string str;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_extension_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(module);
        string_init(&str);
        _extension_string(&str, module, "" TSRMLS_CC);
@@ -3699,7 +3700,7 @@ ZEND_METHOD(reflection_extension, __toString)
    Returns this extension's name */
 ZEND_METHOD(reflection_extension, getName)
 {
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_extension_ptr, 0);
        _default_get_entry(getThis(), "name", sizeof("name"), return_value TSRMLS_CC);
 }
 /* }}} */
@@ -3711,7 +3712,7 @@ ZEND_METHOD(reflection_extension, getVersion)
        reflection_object *intern;
        zend_module_entry *module;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_extension_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(module);
 
        /* An extension does not necessarily have a version number */
@@ -3730,7 +3731,7 @@ ZEND_METHOD(reflection_extension, getFunctions)
        reflection_object *intern;
        zend_module_entry *module;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_extension_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(module);
 
        array_init(return_value);
@@ -3778,7 +3779,7 @@ ZEND_METHOD(reflection_extension, getConstants)
        reflection_object *intern;
        zend_module_entry *module;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);  
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_extension_ptr, 0);        
        GET_REFLECTION_OBJECT_PTR(module);
 
        array_init(return_value);
@@ -3810,7 +3811,7 @@ ZEND_METHOD(reflection_extension, getINIEntries)
        reflection_object *intern;
        zend_module_entry *module;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);  
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_extension_ptr, 0);        
        GET_REFLECTION_OBJECT_PTR(module);
 
        array_init(return_value);
@@ -3846,7 +3847,7 @@ ZEND_METHOD(reflection_extension, getClasses)
        reflection_object *intern;
        zend_module_entry *module;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);  
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_extension_ptr, 0);        
        GET_REFLECTION_OBJECT_PTR(module);
 
        array_init(return_value);
@@ -3861,7 +3862,7 @@ ZEND_METHOD(reflection_extension, getClassNames)
        reflection_object *intern;
        zend_module_entry *module;
 
-       METHOD_NOTSTATIC_NUMPARAMS(0);  
+       METHOD_NOTSTATIC_NUMPARAMS(reflection_extension_ptr, 0);        
        GET_REFLECTION_OBJECT_PTR(module);
 
        array_init(return_value);