From: Harald Radi Date: Sun, 9 Jun 2002 14:20:37 +0000 (+0000) Subject: only check for an available class entry instead of X-Git-Tag: php5_5_0~114 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3738a6edd0b24413db4ec988d9a40012805c5e5d;p=php only check for an available class entry instead of the std_object_handlers on some places #some linuxtag work --- diff --git a/Zend/zend_API.h b/Zend/zend_API.h index f7e0b03d5e..a90cca6139 100644 --- a/Zend/zend_API.h +++ b/Zend/zend_API.h @@ -84,19 +84,7 @@ BEGIN_EXTERN_C() -#define INIT_CLASS_ENTRY(class_container, class_name, functions) \ - { \ - class_container.name = strdup(class_name); \ - class_container.name_length = sizeof(class_name)-1; \ - class_container.builtin_functions = functions; \ - class_container.constructor = NULL; \ - class_container.destructor = NULL; \ - class_container.clone = NULL; \ - class_container.create_object = NULL; \ - class_container.handle_function_call = NULL; \ - class_container.handle_property_get = NULL; \ - class_container.handle_property_set = NULL; \ - } +#define INIT_CLASS_ENTRY(class_container, class_name, functions) INIT_OVERLOADED_CLASS_ENTRY(class_container, class_name, functions, NULL, NULL, NULL) #define INIT_OVERLOADED_CLASS_ENTRY(class_container, class_name, functions, handle_fcall, handle_propget, handle_propset) \ { \ diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index 3a5e947276..6328a0a97f 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -588,7 +588,7 @@ static void is_a_impl(INTERNAL_FUNCTION_PARAMETERS, zend_bool only_subclass) } /* TBI!! new object handlers */ - if(!IS_ZEND_STD_OBJECT(**obj)) { + if(!HAS_CLASS_ENTRY(**obj)) { RETURN_FALSE; } @@ -706,7 +706,7 @@ ZEND_FUNCTION(get_class_methods) if (Z_TYPE_PP(class) == IS_OBJECT) { /* TBI!! new object handlers */ - if(!IS_ZEND_STD_OBJECT(**class)) { + if(!HAS_CLASS_ENTRY(**class)) { RETURN_FALSE; } ce = Z_OBJCE_PP(class); @@ -751,7 +751,7 @@ ZEND_FUNCTION(method_exists) } /* TBI!! new object handlers */ - if(!IS_ZEND_STD_OBJECT(**klass)) { + if(!HAS_CLASS_ENTRY(**klass)) { RETURN_FALSE; } diff --git a/Zend/zend_object_handlers.h b/Zend/zend_object_handlers.h index 3d721b8247..1cf015a343 100644 --- a/Zend/zend_object_handlers.h +++ b/Zend/zend_object_handlers.h @@ -74,5 +74,6 @@ typedef struct _zend_object_handlers { extern zend_object_handlers std_object_handlers; #define IS_ZEND_STD_OBJECT(z) ((z).type == IS_OBJECT && Z_OBJ_HT(z) == &std_object_handlers) +#define HAS_CLASS_ENTRY(z) (Z_OBJ_HT(z)->get_class_entry != NULL) #endif