@@ -42,7 +42,7 @@ static inline void randomizer_common_init(php_random_randomizer *randomizer, zen
42
42
zend_string * mname ;
43
43
zend_function * generate_method ;
44
44
45
- mname = zend_string_init ("generate" , strlen ("generate" ), 0 );
45
+ mname = zend_string_init ("generate" , sizeof ("generate" ) - 1 , 0 );
46
46
generate_method = zend_hash_find_ptr (& engine_object -> ce -> function_table , mname );
47
47
zend_string_release (mname );
48
48
@@ -70,6 +70,11 @@ PHP_METHOD(Random_Randomizer, __construct)
70
70
Z_PARAM_OBJ_OF_CLASS_OR_NULL (engine_object , random_ce_Random_Engine );
71
71
ZEND_PARSE_PARAMETERS_END ();
72
72
73
+ if (randomizer -> algo ) {
74
+ zend_throw_exception_ex (spl_ce_BadMethodCallException , 0 , "Cannot call constructor twice" );
75
+ RETURN_THROWS ();
76
+ }
77
+
73
78
/* Create default RNG instance */
74
79
if (!engine_object ) {
75
80
engine_object = random_ce_Random_Engine_Secure -> create_object (random_ce_Random_Engine_Secure );
@@ -80,7 +85,7 @@ PHP_METHOD(Random_Randomizer, __construct)
80
85
81
86
ZVAL_OBJ (& zengine_object , engine_object );
82
87
83
- zend_update_property (random_ce_Random_Randomizer , Z_OBJ_P (ZEND_THIS ), "engine" , strlen ("engine" ), & zengine_object );
88
+ zend_update_property (random_ce_Random_Randomizer , Z_OBJ_P (ZEND_THIS ), "engine" , sizeof ("engine" ) - 1 , & zengine_object );
84
89
85
90
randomizer_common_init (randomizer , engine_object );
86
91
}
0 commit comments