From a730dc0cf98c8812bc8f4b4773699511e5639c06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Kocsis?= Date: Mon, 15 Feb 2021 10:00:46 +0100 Subject: Generate class entries for snmp, soap, sockets, sodium, sqlite3, sysv*, tidy Closes GH-6696 --- ext/skeleton/skeleton.stub.php | 2 +- ext/skeleton/skeleton_arginfo.h | 3 +- ext/snmp/snmp.c | 9 ++---- ext/snmp/snmp.stub.php | 2 +- ext/snmp/snmp_arginfo.h | 23 ++++++++++++++- ext/soap/soap.c | 33 +++++---------------- ext/soap/soap.stub.php | 2 +- ext/soap/soap_arginfo.h | 63 ++++++++++++++++++++++++++++++++++++++++- ext/sockets/sockets.c | 10 ++----- ext/sockets/sockets.stub.php | 4 ++- ext/sockets/sockets_arginfo.h | 25 +++++++++++++++- ext/sodium/libsodium.c | 5 +--- ext/sodium/libsodium.stub.php | 2 +- ext/sodium/libsodium_arginfo.h | 13 ++++++++- ext/sqlite3/sqlite3.c | 17 ++++------- ext/sqlite3/sqlite3.stub.php | 2 +- ext/sqlite3/sqlite3_arginfo.h | 33 ++++++++++++++++++++- ext/sysvmsg/sysvmsg.c | 5 +--- ext/sysvmsg/sysvmsg.stub.php | 3 +- ext/sysvmsg/sysvmsg_arginfo.h | 14 ++++++++- ext/sysvsem/sysvsem.c | 5 +--- ext/sysvsem/sysvsem.stub.php | 3 +- ext/sysvsem/sysvsem_arginfo.h | 14 ++++++++- ext/sysvshm/sysvshm.c | 5 +--- ext/sysvshm/sysvshm.stub.php | 3 +- ext/sysvshm/sysvshm_arginfo.h | 14 ++++++++- ext/tidy/tidy.c | 22 +++++++------- ext/tidy/tidy.stub.php | 2 +- ext/tidy/tidy_arginfo.h | 24 +++++++++++++++- 29 files changed, 263 insertions(+), 99 deletions(-) diff --git a/ext/skeleton/skeleton.stub.php b/ext/skeleton/skeleton.stub.php index 06740a0a78..c7907faea1 100644 --- a/ext/skeleton/skeleton.stub.php +++ b/ext/skeleton/skeleton.stub.php @@ -1,6 +1,6 @@ create_object = php_snmp_object_new; php_snmp_object_handlers.offset = XtOffsetOf(php_snmp_object, zo); php_snmp_object_handlers.clone_obj = NULL; php_snmp_object_handlers.free_obj = php_snmp_object_free_storage; - php_snmp_ce = zend_register_internal_class(&ce); /* Register SNMP Class properties */ zend_hash_init(&php_snmp_properties, 0, NULL, free_php_snmp_properties, 1); @@ -2035,8 +2033,7 @@ PHP_MINIT_FUNCTION(snmp) REGISTER_SNMP_CLASS_CONST_LONG("ERRNO_MULTIPLE_SET_QUERIES", PHP_SNMP_ERRNO_MULTIPLE_SET_QUERIES); /* Register SNMPException class */ - INIT_CLASS_ENTRY(cex, "SNMPException", NULL); - php_snmp_exception_ce = zend_register_internal_class_ex(&cex, spl_ce_RuntimeException); + php_snmp_exception_ce = register_class_SNMPException(spl_ce_RuntimeException); return SUCCESS; } diff --git a/ext/snmp/snmp.stub.php b/ext/snmp/snmp.stub.php index e6e0cb22eb..1378f34ff9 100644 --- a/ext/snmp/snmp.stub.php +++ b/ext/snmp/snmp.stub.php @@ -1,6 +1,6 @@ ce_flags |= ZEND_ACC_FINAL | ZEND_ACC_NO_DYNAMIC_PROPERTIES; + socket_ce = register_class_Socket(); socket_ce->create_object = socket_create_object; socket_ce->serialize = zend_class_serialize_deny; socket_ce->unserialize = zend_class_unserialize_deny; @@ -447,10 +444,7 @@ static PHP_MINIT_FUNCTION(sockets) socket_object_handlers.clone_obj = NULL; socket_object_handlers.get_gc = socket_get_gc; - zend_class_entry ce_address_info; - INIT_CLASS_ENTRY(ce_address_info, "AddressInfo", class_AddressInfo_methods); - address_info_ce = zend_register_internal_class(&ce_address_info); - address_info_ce->ce_flags |= ZEND_ACC_FINAL | ZEND_ACC_NO_DYNAMIC_PROPERTIES; + address_info_ce = register_class_AddressInfo(); address_info_ce->create_object = address_info_create_object; address_info_ce->serialize = zend_class_serialize_deny; address_info_ce->unserialize = zend_class_unserialize_deny; diff --git a/ext/sockets/sockets.stub.php b/ext/sockets/sockets.stub.php index b345163bc7..967041e98e 100644 --- a/ext/sockets/sockets.stub.php +++ b/ext/sockets/sockets.stub.php @@ -1,11 +1,13 @@ ce_flags |= ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES; + + return class_entry; +} + +zend_class_entry *register_class_AddressInfo() +{ + zend_class_entry ce, *class_entry; + + INIT_CLASS_ENTRY(ce, "AddressInfo", class_AddressInfo_methods); + class_entry = zend_register_internal_class_ex(&ce, NULL); + class_entry->ce_flags |= ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES; + + return class_entry; +} + diff --git a/ext/sodium/libsodium.c b/ext/sodium/libsodium.c index bbe88ba206..7cdae32468 100644 --- a/ext/sodium/libsodium.c +++ b/ext/sodium/libsodium.c @@ -129,14 +129,11 @@ static void sodium_separate_string(zval *zv) { PHP_MINIT_FUNCTION(sodium) { - zend_class_entry ce; - if (sodium_init() < 0) { zend_error(E_ERROR, "sodium_init()"); } - INIT_CLASS_ENTRY(ce, "SodiumException", NULL); - sodium_exception_ce = zend_register_internal_class_ex(&ce, zend_ce_exception); + sodium_exception_ce = register_class_SodiumException(zend_ce_exception); sodium_exception_ce->create_object = sodium_exception_create_object; REGISTER_STRING_CONSTANT("SODIUM_LIBRARY_VERSION", diff --git a/ext/sodium/libsodium.stub.php b/ext/sodium/libsodium.stub.php index e8f7b54ca2..a4029d04d0 100644 --- a/ext/sodium/libsodium.stub.php +++ b/ext/sodium/libsodium.stub.php @@ -1,6 +1,6 @@ create_object = php_sqlite3_object_new; php_sqlite3_sc_entry->serialize = zend_class_serialize_deny; php_sqlite3_sc_entry->unserialize = zend_class_unserialize_deny; /* Register SQLite 3 Prepared Statement Class */ - INIT_CLASS_ENTRY(ce, "SQLite3Stmt", class_SQLite3Stmt_methods); - ce.create_object = php_sqlite3_stmt_object_new; sqlite3_stmt_object_handlers.offset = XtOffsetOf(php_sqlite3_stmt, zo); sqlite3_stmt_object_handlers.clone_obj = NULL; sqlite3_stmt_object_handlers.free_obj = php_sqlite3_stmt_object_free_storage; - php_sqlite3_stmt_entry = zend_register_internal_class(&ce); + php_sqlite3_stmt_entry = register_class_SQLite3Stmt(); + php_sqlite3_stmt_entry->create_object = php_sqlite3_stmt_object_new; php_sqlite3_stmt_entry->serialize = zend_class_serialize_deny; php_sqlite3_stmt_entry->unserialize = zend_class_unserialize_deny; /* Register SQLite 3 Result Class */ - INIT_CLASS_ENTRY(ce, "SQLite3Result", class_SQLite3Result_methods); - ce.create_object = php_sqlite3_result_object_new; sqlite3_result_object_handlers.offset = XtOffsetOf(php_sqlite3_result, zo); sqlite3_result_object_handlers.clone_obj = NULL; sqlite3_result_object_handlers.free_obj = php_sqlite3_result_object_free_storage; - php_sqlite3_result_entry = zend_register_internal_class(&ce); + php_sqlite3_result_entry = register_class_SQLite3Result(); + php_sqlite3_result_entry->create_object = php_sqlite3_result_object_new; php_sqlite3_result_entry->serialize = zend_class_serialize_deny; php_sqlite3_result_entry->unserialize = zend_class_unserialize_deny; diff --git a/ext/sqlite3/sqlite3.stub.php b/ext/sqlite3/sqlite3.stub.php index b4d4fdce29..37776aea66 100644 --- a/ext/sqlite3/sqlite3.stub.php +++ b/ext/sqlite3/sqlite3.stub.php @@ -1,6 +1,6 @@ ce_flags |= ZEND_ACC_FINAL | ZEND_ACC_NO_DYNAMIC_PROPERTIES; + sysvmsg_queue_ce = register_class_SysvMessageQueue(); sysvmsg_queue_ce->create_object = sysvmsg_queue_create_object; sysvmsg_queue_ce->serialize = zend_class_serialize_deny; sysvmsg_queue_ce->unserialize = zend_class_unserialize_deny; diff --git a/ext/sysvmsg/sysvmsg.stub.php b/ext/sysvmsg/sysvmsg.stub.php index 2a0c9cdc95..5ec72a4837 100644 --- a/ext/sysvmsg/sysvmsg.stub.php +++ b/ext/sysvmsg/sysvmsg.stub.php @@ -1,7 +1,8 @@ ce_flags |= ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES; + + return class_entry; +} + diff --git a/ext/sysvsem/sysvsem.c b/ext/sysvsem/sysvsem.c index 46116e212e..7009ad0fac 100644 --- a/ext/sysvsem/sysvsem.c +++ b/ext/sysvsem/sysvsem.c @@ -151,10 +151,7 @@ static void sysvsem_free_obj(zend_object *object) /* {{{ PHP_MINIT_FUNCTION */ PHP_MINIT_FUNCTION(sysvsem) { - zend_class_entry ce; - INIT_CLASS_ENTRY(ce, "SysvSemaphore", class_SysvSemaphore_methods); - sysvsem_ce = zend_register_internal_class(&ce); - sysvsem_ce->ce_flags |= ZEND_ACC_FINAL | ZEND_ACC_NO_DYNAMIC_PROPERTIES; + sysvsem_ce = register_class_SysvSemaphore(); sysvsem_ce->create_object = sysvsem_create_object; sysvsem_ce->serialize = zend_class_serialize_deny; sysvsem_ce->unserialize = zend_class_unserialize_deny; diff --git a/ext/sysvsem/sysvsem.stub.php b/ext/sysvsem/sysvsem.stub.php index 8da71b09fb..40cb9b5d3e 100644 --- a/ext/sysvsem/sysvsem.stub.php +++ b/ext/sysvsem/sysvsem.stub.php @@ -1,7 +1,8 @@ ce_flags |= ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES; + + return class_entry; +} + diff --git a/ext/sysvshm/sysvshm.c b/ext/sysvshm/sysvshm.c index 96b437b419..9ababdb8fe 100644 --- a/ext/sysvshm/sysvshm.c +++ b/ext/sysvshm/sysvshm.c @@ -99,10 +99,7 @@ static int php_remove_shm_data(sysvshm_chunk_head *ptr, zend_long shm_varpos); /* {{{ PHP_MINIT_FUNCTION */ PHP_MINIT_FUNCTION(sysvshm) { - zend_class_entry ce; - INIT_CLASS_ENTRY(ce, "SysvSharedMemory", class_SysvSharedMemory_methods); - sysvshm_ce = zend_register_internal_class(&ce); - sysvshm_ce->ce_flags |= ZEND_ACC_FINAL | ZEND_ACC_NO_DYNAMIC_PROPERTIES; + sysvshm_ce = register_class_SysvSharedMemory(); sysvshm_ce->create_object = sysvshm_create_object; sysvshm_ce->serialize = zend_class_serialize_deny; sysvshm_ce->unserialize = zend_class_unserialize_deny; diff --git a/ext/sysvshm/sysvshm.stub.php b/ext/sysvshm/sysvshm.stub.php index 4f2799a349..d874435b06 100644 --- a/ext/sysvshm/sysvshm.stub.php +++ b/ext/sysvshm/sysvshm.stub.php @@ -1,7 +1,8 @@ ce_flags |= ZEND_ACC_FINAL|ZEND_ACC_NO_DYNAMIC_PROPERTIES; + + return class_entry; +} + diff --git a/ext/tidy/tidy.c b/ext/tidy/tidy.c index ad2059c4e0..561ece618b 100644 --- a/ext/tidy/tidy.c +++ b/ext/tidy/tidy.c @@ -89,16 +89,6 @@ } \ } -#define REGISTER_TIDY_CLASS(classname, name, parent, __flags) \ - { \ - zend_class_entry ce; \ - INIT_CLASS_ENTRY(ce, # classname, class_ ## classname ## _methods); \ - ce.create_object = tidy_object_new_ ## name; \ - tidy_ce_ ## name = zend_register_internal_class_ex(&ce, parent); \ - tidy_ce_ ## name->ce_flags |= __flags; \ - memcpy(&tidy_object_handlers_ ## name, &std_object_handlers, sizeof(zend_object_handlers)); \ - tidy_object_handlers_ ## name.clone_obj = NULL; \ - } #define TIDY_TAG_CONST(tag) REGISTER_LONG_CONSTANT("TIDY_TAG_" #tag, TidyTag_##tag, CONST_CS | CONST_PERSISTENT) #define TIDY_NODE_CONST(name, type) REGISTER_LONG_CONSTANT("TIDY_NODETYPE_" #name, TidyNode_##type, CONST_CS | CONST_PERSISTENT) @@ -826,8 +816,16 @@ static PHP_MINIT_FUNCTION(tidy) tidySetPanicCall(php_tidy_panic); REGISTER_INI_ENTRIES(); - REGISTER_TIDY_CLASS(tidy, doc, NULL, 0); - REGISTER_TIDY_CLASS(tidyNode, node, NULL, ZEND_ACC_FINAL); + + tidy_ce_doc = register_class_tidy(); + tidy_ce_doc->create_object = tidy_object_new_doc; + memcpy(&tidy_object_handlers_doc, &std_object_handlers, sizeof(zend_object_handlers)); + tidy_object_handlers_doc.clone_obj = NULL; + + tidy_ce_node = register_class_tidyNode(); + tidy_ce_node->create_object = tidy_object_new_node; + memcpy(&tidy_object_handlers_node, &std_object_handlers, sizeof(zend_object_handlers)); + tidy_object_handlers_node.clone_obj = NULL; tidy_object_handlers_doc.cast_object = tidy_doc_cast_handler; tidy_object_handlers_node.cast_object = tidy_node_cast_handler; diff --git a/ext/tidy/tidy.stub.php b/ext/tidy/tidy.stub.php index 4030fa954d..74867f6cd7 100644 --- a/ext/tidy/tidy.stub.php +++ b/ext/tidy/tidy.stub.php @@ -1,6 +1,6 @@ ce_flags |= ZEND_ACC_FINAL; + + return class_entry; +} + -- cgit v1.2.1