diff --git a/UPGRADING.INTERNALS b/UPGRADING.INTERNALS index acfe30e853559..0bdfc5d37f01a 100644 --- a/UPGRADING.INTERNALS +++ b/UPGRADING.INTERNALS @@ -39,6 +39,10 @@ PHP 8.5 INTERNALS UPGRADE NOTES . Hash functions now use proper hash_spec_result enum for return values instead of using SUCCESS and FAILURE. +- Random + . The handlers parameter of php_random_engine_common_init() has been + removed. Use the default_object_handlers field on the CE instead. + - Zend . Added zend_safe_assign_to_variable_noref() function to safely assign a value to a non-reference zval. diff --git a/ext/random/php_random.h b/ext/random/php_random.h index bc55a3defcc7c..9db8c8ba19052 100644 --- a/ext/random/php_random.h +++ b/ext/random/php_random.h @@ -151,7 +151,7 @@ static inline php_random_randomizer *php_random_randomizer_from_obj(zend_object PHPAPI void *php_random_status_alloc(const php_random_algo *algo, const bool persistent); PHPAPI void *php_random_status_copy(const php_random_algo *algo, void *old_status, void *new_status); PHPAPI void php_random_status_free(void *status, const bool persistent); -PHPAPI php_random_engine *php_random_engine_common_init(zend_class_entry *ce, zend_object_handlers *handlers, const php_random_algo *algo); +PHPAPI php_random_engine *php_random_engine_common_init(zend_class_entry *ce, const php_random_algo *algo); PHPAPI void php_random_engine_common_free_object(zend_object *object); PHPAPI zend_object *php_random_engine_common_clone_object(zend_object *object); PHPAPI uint32_t php_random_range32(php_random_algo_with_state engine, uint32_t umax); diff --git a/ext/random/random.c b/ext/random/random.c index 46a6c4fd44f2c..f9feaadcbb15f 100644 --- a/ext/random/random.c +++ b/ext/random/random.c @@ -197,22 +197,22 @@ PHPAPI uint64_t php_random_range64(php_random_algo_with_state engine, uint64_t u static zend_object *php_random_engine_mt19937_new(zend_class_entry *ce) { - return &php_random_engine_common_init(ce, &random_engine_mt19937_object_handlers, &php_random_algo_mt19937)->std; + return &php_random_engine_common_init(ce, &php_random_algo_mt19937)->std; } static zend_object *php_random_engine_pcgoneseq128xslrr64_new(zend_class_entry *ce) { - return &php_random_engine_common_init(ce, &random_engine_pcgoneseq128xslrr64_object_handlers, &php_random_algo_pcgoneseq128xslrr64)->std; + return &php_random_engine_common_init(ce, &php_random_algo_pcgoneseq128xslrr64)->std; } static zend_object *php_random_engine_xoshiro256starstar_new(zend_class_entry *ce) { - return &php_random_engine_common_init(ce, &random_engine_xoshiro256starstar_object_handlers, &php_random_algo_xoshiro256starstar)->std; + return &php_random_engine_common_init(ce, &php_random_algo_xoshiro256starstar)->std; } static zend_object *php_random_engine_secure_new(zend_class_entry *ce) { - return &php_random_engine_common_init(ce, &random_engine_secure_object_handlers, &php_random_algo_secure)->std; + return &php_random_engine_common_init(ce, &php_random_algo_secure)->std; } static zend_object *php_random_randomizer_new(zend_class_entry *ce) @@ -250,7 +250,7 @@ PHPAPI void php_random_status_free(void *status, const bool persistent) pefree(status, persistent); } -PHPAPI php_random_engine *php_random_engine_common_init(zend_class_entry *ce, zend_object_handlers *handlers, const php_random_algo *algo) +PHPAPI php_random_engine *php_random_engine_common_init(zend_class_entry *ce, const php_random_algo *algo) { php_random_engine *engine = zend_object_alloc(sizeof(php_random_engine), ce); @@ -261,7 +261,6 @@ PHPAPI php_random_engine *php_random_engine_common_init(zend_class_entry *ce, ze .algo = algo, .state = php_random_status_alloc(algo, false) }; - engine->std.handlers = handlers; return engine; } @@ -746,6 +745,7 @@ PHP_MINIT_FUNCTION(random) /* Random\Engine\Mt19937 */ random_ce_Random_Engine_Mt19937 = register_class_Random_Engine_Mt19937(random_ce_Random_Engine); random_ce_Random_Engine_Mt19937->create_object = php_random_engine_mt19937_new; + random_ce_Random_Engine_Mt19937->default_object_handlers = &random_engine_mt19937_object_handlers; memcpy(&random_engine_mt19937_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); random_engine_mt19937_object_handlers.offset = XtOffsetOf(php_random_engine, std); random_engine_mt19937_object_handlers.free_obj = php_random_engine_common_free_object; @@ -754,6 +754,7 @@ PHP_MINIT_FUNCTION(random) /* Random\Engine\PcgOnseq128XslRr64 */ random_ce_Random_Engine_PcgOneseq128XslRr64 = register_class_Random_Engine_PcgOneseq128XslRr64(random_ce_Random_Engine); random_ce_Random_Engine_PcgOneseq128XslRr64->create_object = php_random_engine_pcgoneseq128xslrr64_new; + random_ce_Random_Engine_PcgOneseq128XslRr64->default_object_handlers = &random_engine_pcgoneseq128xslrr64_object_handlers; memcpy(&random_engine_pcgoneseq128xslrr64_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); random_engine_pcgoneseq128xslrr64_object_handlers.offset = XtOffsetOf(php_random_engine, std); random_engine_pcgoneseq128xslrr64_object_handlers.free_obj = php_random_engine_common_free_object; @@ -762,6 +763,7 @@ PHP_MINIT_FUNCTION(random) /* Random\Engine\Xoshiro256StarStar */ random_ce_Random_Engine_Xoshiro256StarStar = register_class_Random_Engine_Xoshiro256StarStar(random_ce_Random_Engine); random_ce_Random_Engine_Xoshiro256StarStar->create_object = php_random_engine_xoshiro256starstar_new; + random_ce_Random_Engine_Xoshiro256StarStar->default_object_handlers = &random_engine_xoshiro256starstar_object_handlers; memcpy(&random_engine_xoshiro256starstar_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); random_engine_xoshiro256starstar_object_handlers.offset = XtOffsetOf(php_random_engine, std); random_engine_xoshiro256starstar_object_handlers.free_obj = php_random_engine_common_free_object; @@ -770,6 +772,7 @@ PHP_MINIT_FUNCTION(random) /* Random\Engine\Secure */ random_ce_Random_Engine_Secure = register_class_Random_Engine_Secure(random_ce_Random_CryptoSafeEngine); random_ce_Random_Engine_Secure->create_object = php_random_engine_secure_new; + random_ce_Random_Engine_Secure->default_object_handlers = &random_engine_secure_object_handlers; memcpy(&random_engine_secure_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); random_engine_secure_object_handlers.offset = XtOffsetOf(php_random_engine, std); random_engine_secure_object_handlers.free_obj = php_random_engine_common_free_object;