@@ -3684,22 +3684,22 @@ ZEND_METHOD(FFI, new) /* {{{ */
3684
3684
FFI_G (symbols ) = NULL ;
3685
3685
FFI_G (tags ) = NULL ;
3686
3686
}
3687
+ bool clean_symbols = FFI_G (symbols ) == NULL ;
3688
+ bool clean_tags = FFI_G (tags ) == NULL ;
3687
3689
3688
3690
FFI_G (default_type_attr ) = 0 ;
3689
3691
3690
3692
if (zend_ffi_parse_type (ZSTR_VAL (type_def ), ZSTR_LEN (type_def ), & dcl ) != SUCCESS ) {
3691
3693
zend_ffi_type_dtor (dcl .type );
3692
- if (Z_TYPE (EX (This )) != IS_OBJECT ) {
3693
- if (FFI_G (tags )) {
3694
- zend_hash_destroy (FFI_G (tags ));
3695
- efree (FFI_G (tags ));
3696
- FFI_G (tags ) = NULL ;
3697
- }
3698
- if (FFI_G (symbols )) {
3699
- zend_hash_destroy (FFI_G (symbols ));
3700
- efree (FFI_G (symbols ));
3701
- FFI_G (symbols ) = NULL ;
3702
- }
3694
+ if (clean_tags && FFI_G (tags )) {
3695
+ zend_hash_destroy (FFI_G (tags ));
3696
+ efree (FFI_G (tags ));
3697
+ FFI_G (tags ) = NULL ;
3698
+ }
3699
+ if (clean_symbols && FFI_G (symbols )) {
3700
+ zend_hash_destroy (FFI_G (symbols ));
3701
+ efree (FFI_G (symbols ));
3702
+ FFI_G (symbols ) = NULL ;
3703
3703
}
3704
3704
return ;
3705
3705
}
@@ -3709,15 +3709,13 @@ ZEND_METHOD(FFI, new) /* {{{ */
3709
3709
is_const = 1 ;
3710
3710
}
3711
3711
3712
- if (Z_TYPE (EX (This )) != IS_OBJECT ) {
3713
- if (FFI_G (tags )) {
3714
- zend_ffi_tags_cleanup (& dcl );
3715
- }
3716
- if (FFI_G (symbols )) {
3717
- zend_hash_destroy (FFI_G (symbols ));
3718
- efree (FFI_G (symbols ));
3719
- FFI_G (symbols ) = NULL ;
3720
- }
3712
+ if (clean_tags && FFI_G (tags )) {
3713
+ zend_ffi_tags_cleanup (& dcl );
3714
+ }
3715
+ if (clean_symbols && FFI_G (symbols )) {
3716
+ zend_hash_destroy (FFI_G (symbols ));
3717
+ efree (FFI_G (symbols ));
3718
+ FFI_G (symbols ) = NULL ;
3721
3719
}
3722
3720
FFI_G (symbols ) = NULL ;
3723
3721
FFI_G (tags ) = NULL ;
@@ -3828,22 +3826,22 @@ ZEND_METHOD(FFI, cast) /* {{{ */
3828
3826
FFI_G (symbols ) = NULL ;
3829
3827
FFI_G (tags ) = NULL ;
3830
3828
}
3829
+ bool clean_symbols = FFI_G (symbols ) == NULL ;
3830
+ bool clean_tags = FFI_G (tags ) == NULL ;
3831
3831
3832
3832
FFI_G (default_type_attr ) = 0 ;
3833
3833
3834
3834
if (zend_ffi_parse_type (ZSTR_VAL (type_def ), ZSTR_LEN (type_def ), & dcl ) != SUCCESS ) {
3835
3835
zend_ffi_type_dtor (dcl .type );
3836
- if (Z_TYPE (EX (This )) != IS_OBJECT ) {
3837
- if (FFI_G (tags )) {
3838
- zend_hash_destroy (FFI_G (tags ));
3839
- efree (FFI_G (tags ));
3840
- FFI_G (tags ) = NULL ;
3841
- }
3842
- if (FFI_G (symbols )) {
3843
- zend_hash_destroy (FFI_G (symbols ));
3844
- efree (FFI_G (symbols ));
3845
- FFI_G (symbols ) = NULL ;
3846
- }
3836
+ if (clean_tags && FFI_G (tags )) {
3837
+ zend_hash_destroy (FFI_G (tags ));
3838
+ efree (FFI_G (tags ));
3839
+ FFI_G (tags ) = NULL ;
3840
+ }
3841
+ if (clean_symbols && FFI_G (symbols )) {
3842
+ zend_hash_destroy (FFI_G (symbols ));
3843
+ efree (FFI_G (symbols ));
3844
+ FFI_G (symbols ) = NULL ;
3847
3845
}
3848
3846
return ;
3849
3847
}
@@ -3853,15 +3851,13 @@ ZEND_METHOD(FFI, cast) /* {{{ */
3853
3851
is_const = 1 ;
3854
3852
}
3855
3853
3856
- if (Z_TYPE (EX (This )) != IS_OBJECT ) {
3857
- if (FFI_G (tags )) {
3858
- zend_ffi_tags_cleanup (& dcl );
3859
- }
3860
- if (FFI_G (symbols )) {
3861
- zend_hash_destroy (FFI_G (symbols ));
3862
- efree (FFI_G (symbols ));
3863
- FFI_G (symbols ) = NULL ;
3864
- }
3854
+ if (clean_tags && FFI_G (tags )) {
3855
+ zend_ffi_tags_cleanup (& dcl );
3856
+ }
3857
+ if (clean_symbols && FFI_G (symbols )) {
3858
+ zend_hash_destroy (FFI_G (symbols ));
3859
+ efree (FFI_G (symbols ));
3860
+ FFI_G (symbols ) = NULL ;
3865
3861
}
3866
3862
FFI_G (symbols ) = NULL ;
3867
3863
FFI_G (tags ) = NULL ;
@@ -3994,35 +3990,33 @@ ZEND_METHOD(FFI, type) /* {{{ */
3994
3990
FFI_G (symbols ) = NULL ;
3995
3991
FFI_G (tags ) = NULL ;
3996
3992
}
3993
+ bool clean_symbols = FFI_G (symbols ) == NULL ;
3994
+ bool clean_tags = FFI_G (tags ) == NULL ;
3997
3995
3998
3996
FFI_G (default_type_attr ) = 0 ;
3999
3997
4000
3998
if (zend_ffi_parse_type (ZSTR_VAL (type_def ), ZSTR_LEN (type_def ), & dcl ) != SUCCESS ) {
4001
3999
zend_ffi_type_dtor (dcl .type );
4002
- if (Z_TYPE (EX (This )) != IS_OBJECT ) {
4003
- if (FFI_G (tags )) {
4004
- zend_hash_destroy (FFI_G (tags ));
4005
- efree (FFI_G (tags ));
4006
- FFI_G (tags ) = NULL ;
4007
- }
4008
- if (FFI_G (symbols )) {
4009
- zend_hash_destroy (FFI_G (symbols ));
4010
- efree (FFI_G (symbols ));
4011
- FFI_G (symbols ) = NULL ;
4012
- }
4013
- }
4014
- return ;
4015
- }
4016
-
4017
- if (Z_TYPE (EX (This )) != IS_OBJECT ) {
4018
- if (FFI_G (tags )) {
4019
- zend_ffi_tags_cleanup (& dcl );
4000
+ if (clean_tags && FFI_G (tags )) {
4001
+ zend_hash_destroy (FFI_G (tags ));
4002
+ efree (FFI_G (tags ));
4003
+ FFI_G (tags ) = NULL ;
4020
4004
}
4021
- if (FFI_G (symbols )) {
4005
+ if (clean_symbols && FFI_G (symbols )) {
4022
4006
zend_hash_destroy (FFI_G (symbols ));
4023
4007
efree (FFI_G (symbols ));
4024
4008
FFI_G (symbols ) = NULL ;
4025
4009
}
4010
+ return ;
4011
+ }
4012
+
4013
+ if (clean_tags && FFI_G (tags )) {
4014
+ zend_ffi_tags_cleanup (& dcl );
4015
+ }
4016
+ if (clean_symbols && FFI_G (symbols )) {
4017
+ zend_hash_destroy (FFI_G (symbols ));
4018
+ efree (FFI_G (symbols ));
4019
+ FFI_G (symbols ) = NULL ;
4026
4020
}
4027
4021
FFI_G (symbols ) = NULL ;
4028
4022
FFI_G (tags ) = NULL ;
0 commit comments