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