diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2019-08-23 17:01:49 +0200 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-08-23 17:01:49 +0200 |
commit | 51ea7fc4775bad00f332c0c8b0c54be7c60ab2ed (patch) | |
tree | 2b2674384fbc5bd7b5011cf5695546c6700788a3 /Zend/zend_API.c | |
parent | 51905cd2126d8f1523de01a4b5cbdb4f161758c0 (diff) | |
parent | 8807889ac280503d5cd1cd05804a6f278a40300e (diff) | |
download | php-git-51ea7fc4775bad00f332c0c8b0c54be7c60ab2ed.tar.gz |
Merge branch 'PHP-7.4'
Diffstat (limited to 'Zend/zend_API.c')
-rw-r--r-- | Zend/zend_API.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/Zend/zend_API.c b/Zend/zend_API.c index 50acdd878b..1ace606a7e 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -2701,6 +2701,7 @@ ZEND_API int zend_disable_class(char *class_name, size_t class_name_length) /* { { zend_class_entry *disabled_class; zend_string *key; + zend_function *fn; key = zend_string_alloc(class_name_length, 0); zend_str_tolower_copy(ZSTR_VAL(key), class_name, class_name_length); @@ -2709,8 +2710,16 @@ ZEND_API int zend_disable_class(char *class_name, size_t class_name_length) /* { if (!disabled_class) { return FAILURE; } + INIT_CLASS_ENTRY_INIT_METHODS((*disabled_class), disabled_class_new); disabled_class->create_object = display_disabled_class; + + ZEND_HASH_FOREACH_PTR(&disabled_class->function_table, fn) { + if ((fn->common.fn_flags & (ZEND_ACC_HAS_RETURN_TYPE|ZEND_ACC_HAS_TYPE_HINTS)) && + fn->common.scope == disabled_class) { + zend_free_internal_arg_info(&fn->internal_function); + } + } ZEND_HASH_FOREACH_END(); zend_hash_clean(&disabled_class->function_table); return SUCCESS; } |