@@ -3730,22 +3730,22 @@ ZEND_METHOD(FFI, new) /* {{{ */
3730
3730
FFI_G (symbols ) = NULL ;
3731
3731
FFI_G (tags ) = NULL ;
3732
3732
}
3733
+ bool clean_symbols = FFI_G (symbols ) == NULL ;
3734
+ bool clean_tags = FFI_G (tags ) == NULL ;
3733
3735
3734
3736
FFI_G (default_type_attr ) = 0 ;
3735
3737
3736
3738
if (zend_ffi_parse_type (ZSTR_VAL (type_def ), ZSTR_LEN (type_def ), & dcl ) == FAILURE ) {
3737
3739
zend_ffi_type_dtor (dcl .type );
3738
- if (Z_TYPE (EX (This )) != IS_OBJECT ) {
3739
- if (FFI_G (tags )) {
3740
- zend_hash_destroy (FFI_G (tags ));
3741
- efree (FFI_G (tags ));
3742
- FFI_G (tags ) = NULL ;
3743
- }
3744
- if (FFI_G (symbols )) {
3745
- zend_hash_destroy (FFI_G (symbols ));
3746
- efree (FFI_G (symbols ));
3747
- FFI_G (symbols ) = NULL ;
3748
- }
3740
+ if (clean_tags && FFI_G (tags )) {
3741
+ zend_hash_destroy (FFI_G (tags ));
3742
+ efree (FFI_G (tags ));
3743
+ FFI_G (tags ) = NULL ;
3744
+ }
3745
+ if (clean_symbols && FFI_G (symbols )) {
3746
+ zend_hash_destroy (FFI_G (symbols ));
3747
+ efree (FFI_G (symbols ));
3748
+ FFI_G (symbols ) = NULL ;
3749
3749
}
3750
3750
return ;
3751
3751
}
@@ -3755,15 +3755,13 @@ ZEND_METHOD(FFI, new) /* {{{ */
3755
3755
is_const = 1 ;
3756
3756
}
3757
3757
3758
- if (Z_TYPE (EX (This )) != IS_OBJECT ) {
3759
- if (FFI_G (tags )) {
3760
- zend_ffi_tags_cleanup (& dcl );
3761
- }
3762
- if (FFI_G (symbols )) {
3763
- zend_hash_destroy (FFI_G (symbols ));
3764
- efree (FFI_G (symbols ));
3765
- FFI_G (symbols ) = NULL ;
3766
- }
3758
+ if (clean_tags && FFI_G (tags )) {
3759
+ zend_ffi_tags_cleanup (& dcl );
3760
+ }
3761
+ if (clean_symbols && FFI_G (symbols )) {
3762
+ zend_hash_destroy (FFI_G (symbols ));
3763
+ efree (FFI_G (symbols ));
3764
+ FFI_G (symbols ) = NULL ;
3767
3765
}
3768
3766
FFI_G (symbols ) = NULL ;
3769
3767
FFI_G (tags ) = NULL ;
@@ -3874,22 +3872,22 @@ ZEND_METHOD(FFI, cast) /* {{{ */
3874
3872
FFI_G (symbols ) = NULL ;
3875
3873
FFI_G (tags ) = NULL ;
3876
3874
}
3875
+ bool clean_symbols = FFI_G (symbols ) == NULL ;
3876
+ bool clean_tags = FFI_G (tags ) == NULL ;
3877
3877
3878
3878
FFI_G (default_type_attr ) = 0 ;
3879
3879
3880
3880
if (zend_ffi_parse_type (ZSTR_VAL (type_def ), ZSTR_LEN (type_def ), & dcl ) == FAILURE ) {
3881
3881
zend_ffi_type_dtor (dcl .type );
3882
- if (Z_TYPE (EX (This )) != IS_OBJECT ) {
3883
- if (FFI_G (tags )) {
3884
- zend_hash_destroy (FFI_G (tags ));
3885
- efree (FFI_G (tags ));
3886
- FFI_G (tags ) = NULL ;
3887
- }
3888
- if (FFI_G (symbols )) {
3889
- zend_hash_destroy (FFI_G (symbols ));
3890
- efree (FFI_G (symbols ));
3891
- FFI_G (symbols ) = NULL ;
3892
- }
3882
+ if (clean_tags && FFI_G (tags )) {
3883
+ zend_hash_destroy (FFI_G (tags ));
3884
+ efree (FFI_G (tags ));
3885
+ FFI_G (tags ) = NULL ;
3886
+ }
3887
+ if (clean_symbols && FFI_G (symbols )) {
3888
+ zend_hash_destroy (FFI_G (symbols ));
3889
+ efree (FFI_G (symbols ));
3890
+ FFI_G (symbols ) = NULL ;
3893
3891
}
3894
3892
return ;
3895
3893
}
@@ -3899,15 +3897,13 @@ ZEND_METHOD(FFI, cast) /* {{{ */
3899
3897
is_const = 1 ;
3900
3898
}
3901
3899
3902
- if (Z_TYPE (EX (This )) != IS_OBJECT ) {
3903
- if (FFI_G (tags )) {
3904
- zend_ffi_tags_cleanup (& dcl );
3905
- }
3906
- if (FFI_G (symbols )) {
3907
- zend_hash_destroy (FFI_G (symbols ));
3908
- efree (FFI_G (symbols ));
3909
- FFI_G (symbols ) = NULL ;
3910
- }
3900
+ if (clean_tags && FFI_G (tags )) {
3901
+ zend_ffi_tags_cleanup (& dcl );
3902
+ }
3903
+ if (clean_symbols && FFI_G (symbols )) {
3904
+ zend_hash_destroy (FFI_G (symbols ));
3905
+ efree (FFI_G (symbols ));
3906
+ FFI_G (symbols ) = NULL ;
3911
3907
}
3912
3908
FFI_G (symbols ) = NULL ;
3913
3909
FFI_G (tags ) = NULL ;
@@ -4040,35 +4036,33 @@ ZEND_METHOD(FFI, type) /* {{{ */
4040
4036
FFI_G (symbols ) = NULL ;
4041
4037
FFI_G (tags ) = NULL ;
4042
4038
}
4039
+ bool clean_symbols = FFI_G (symbols ) == NULL ;
4040
+ bool clean_tags = FFI_G (tags ) == NULL ;
4043
4041
4044
4042
FFI_G (default_type_attr ) = 0 ;
4045
4043
4046
4044
if (zend_ffi_parse_type (ZSTR_VAL (type_def ), ZSTR_LEN (type_def ), & dcl ) == FAILURE ) {
4047
4045
zend_ffi_type_dtor (dcl .type );
4048
- if (Z_TYPE (EX (This )) != IS_OBJECT ) {
4049
- if (FFI_G (tags )) {
4050
- zend_hash_destroy (FFI_G (tags ));
4051
- efree (FFI_G (tags ));
4052
- FFI_G (tags ) = NULL ;
4053
- }
4054
- if (FFI_G (symbols )) {
4055
- zend_hash_destroy (FFI_G (symbols ));
4056
- efree (FFI_G (symbols ));
4057
- FFI_G (symbols ) = NULL ;
4058
- }
4059
- }
4060
- return ;
4061
- }
4062
-
4063
- if (Z_TYPE (EX (This )) != IS_OBJECT ) {
4064
- if (FFI_G (tags )) {
4065
- zend_ffi_tags_cleanup (& dcl );
4046
+ if (clean_tags && FFI_G (tags )) {
4047
+ zend_hash_destroy (FFI_G (tags ));
4048
+ efree (FFI_G (tags ));
4049
+ FFI_G (tags ) = NULL ;
4066
4050
}
4067
- if (FFI_G (symbols )) {
4051
+ if (clean_symbols && FFI_G (symbols )) {
4068
4052
zend_hash_destroy (FFI_G (symbols ));
4069
4053
efree (FFI_G (symbols ));
4070
4054
FFI_G (symbols ) = NULL ;
4071
4055
}
4056
+ return ;
4057
+ }
4058
+
4059
+ if (clean_tags && FFI_G (tags )) {
4060
+ zend_ffi_tags_cleanup (& dcl );
4061
+ }
4062
+ if (clean_symbols && FFI_G (symbols )) {
4063
+ zend_hash_destroy (FFI_G (symbols ));
4064
+ efree (FFI_G (symbols ));
4065
+ FFI_G (symbols ) = NULL ;
4072
4066
}
4073
4067
FFI_G (symbols ) = NULL ;
4074
4068
FFI_G (tags ) = NULL ;
0 commit comments