File tree Expand file tree Collapse file tree 1 file changed +8
-2
lines changed Expand file tree Collapse file tree 1 file changed +8
-2
lines changed Original file line number Diff line number Diff line change @@ -35,6 +35,8 @@ use std::{
35
35
/// Because PHP is single threaded, so there is no lock here.
36
36
static mut GLOBAL_MODULE : * mut Module = null_mut ( ) ;
37
37
38
+ static mut GLOBAL_MODULE_ENTRY : * mut zend_module_entry = null_mut ( ) ;
39
+
38
40
unsafe extern "C" fn module_startup ( _type : c_int , module_number : c_int ) -> c_int {
39
41
let module = GLOBAL_MODULE . as_mut ( ) . unwrap ( ) ;
40
42
@@ -211,6 +213,10 @@ impl Module {
211
213
/// Leak memory to generate `zend_module_entry` pointer.
212
214
#[ doc( hidden) ]
213
215
pub unsafe fn module_entry ( self ) -> * const zend_module_entry {
216
+ if !GLOBAL_MODULE_ENTRY . is_null ( ) {
217
+ return GLOBAL_MODULE_ENTRY ;
218
+ }
219
+
214
220
assert ! ( !self . name. as_bytes( ) . is_empty( ) , "module name must be set" ) ;
215
221
assert ! (
216
222
!self . version. as_bytes( ) . is_empty( ) ,
@@ -249,10 +255,10 @@ impl Module {
249
255
build_id : phper_get_zend_module_build_id ( ) ,
250
256
} ) ;
251
257
252
- assert ! ( GLOBAL_MODULE . is_null( ) , "GLOBAL_MODULE has registered" ) ;
253
258
GLOBAL_MODULE = Box :: into_raw ( module) ;
259
+ GLOBAL_MODULE_ENTRY = Box :: into_raw ( entry) ;
254
260
255
- Box :: into_raw ( entry )
261
+ GLOBAL_MODULE_ENTRY
256
262
}
257
263
258
264
fn function_entries ( & self ) -> * const zend_function_entry {
You can’t perform that action at this time.
0 commit comments