Commit: d289efb45771217a826f10def835a6185683a1eb Author: Xinchen Hui <larue...@php.net> Sat, 4 Aug 2012 11:14:03 +0800 Parents: d1f0662e4d587754742891f0a179551d8f36674f 03a1fcabf31210d3f304bfacf5096ce43c2b8f93 Branches: PHP-5.4
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=d289efb45771217a826f10def835a6185683a1eb Log: Merge branch 'PHP-5.3' into PHP-5.4 Conflicts: Zend/zend_API.h Changed paths: MM Zend/zend_API.c MM Zend/zend_API.h Diff: diff --cc Zend/zend_API.c index 98a33e5,16a940d..827446b --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@@ -2547,16 -2342,16 +2547,15 @@@ static const zend_function_entry disabl ZEND_API int zend_disable_class(char *class_name, uint class_name_length TSRMLS_DC) /* {{{ */ { - zend_class_entry disabled_class; + zend_class_entry **disabled_class; zend_str_tolower(class_name, class_name_length); - if (zend_hash_del(CG(class_table), class_name, class_name_length+1)==FAILURE) { + if (zend_hash_find(CG(class_table), class_name, class_name_length+1, (void **)&disabled_class)==FAILURE) { return FAILURE; } - INIT_OVERLOADED_CLASS_ENTRY_EX(disabled_class, class_name, class_name_length, disabled_class_new, NULL, NULL, NULL, NULL, NULL); - disabled_class.create_object = display_disabled_class; - disabled_class.name_length = class_name_length; - zend_register_internal_class(&disabled_class TSRMLS_CC); + INIT_CLASS_ENTRY_INIT_METHODS((**disabled_class), disabled_class_new, NULL, NULL, NULL, NULL, NULL); + (*disabled_class)->create_object = display_disabled_class; - (*disabled_class)->builtin_functions = disabled_class_new; + zend_hash_clean(&((*disabled_class)->function_table)); return SUCCESS; } /* }}} */ diff --cc Zend/zend_API.h index f54db7f,ddd84fa..d7fbc3c --- a/Zend/zend_API.h +++ b/Zend/zend_API.h @@@ -168,13 -167,15 +168,18 @@@ typedef struct _zend_fcall_info_cache #define INIT_OVERLOADED_CLASS_ENTRY_EX(class_container, class_name, class_name_len, functions, handle_fcall, handle_propget, handle_propset, handle_propunset, handle_propisset) \ { \ + const char *cl_name = class_name; \ int _len = class_name_len; \ - class_container.name = zend_strndup(class_name, _len); \ + class_container.name = zend_new_interned_string(cl_name, _len+1, 0 TSRMLS_CC); \ + if (class_container.name == cl_name) { \ + class_container.name = zend_strndup(cl_name, _len); \ + } \ class_container.name_length = _len; \ + INIT_CLASS_ENTRY_INIT_METHODS(class_container, functions, handle_fcall, handle_propget, handle_propset, handle_propunset, handle_propisset) \ + } + + #define INIT_CLASS_ENTRY_INIT_METHODS(class_container, functions, handle_fcall, handle_propget, handle_propset, handle_propunset, handle_propisset) \ + { \ - class_container.builtin_functions = functions; \ class_container.constructor = NULL; \ class_container.destructor = NULL; \ class_container.clone = NULL; \ -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php