File tree Expand file tree Collapse file tree 2 files changed +14
-10
lines changed Expand file tree Collapse file tree 2 files changed +14
-10
lines changed Original file line number Diff line number Diff line change @@ -37,7 +37,7 @@ use std::{
37
37
cell:: RefCell ,
38
38
ffi:: { CStr , CString } ,
39
39
marker:: PhantomData ,
40
- mem:: { MaybeUninit , zeroed} ,
40
+ mem:: { ManuallyDrop , zeroed} ,
41
41
ptr:: { null, null_mut} ,
42
42
rc:: Rc ,
43
43
} ;
@@ -528,15 +528,8 @@ unsafe fn register_enum_case(
528
528
) ;
529
529
}
530
530
Scalar :: String ( value) => {
531
- #[ allow( clippy:: useless_conversion) ]
532
- let value_ptr = phper_zend_string_init (
533
- value. as_ptr ( ) . cast ( ) ,
534
- value. len ( ) . try_into ( ) . unwrap ( ) ,
535
- true . into ( ) ,
536
- ) ;
537
- let mut value = MaybeUninit :: < zval > :: uninit ( ) ;
538
- phper_zval_str ( value. as_mut_ptr ( ) , value_ptr) ;
539
-
531
+ let value = ZString :: new_persistent ( value) ;
532
+ let mut value = ManuallyDrop :: new ( ZVal :: from ( value) ) ;
540
533
zend_enum_add_case_cstr ( class_ce, case_name. as_ptr ( ) , value. as_mut_ptr ( ) ) ;
541
534
}
542
535
Scalar :: Null => {
Original file line number Diff line number Diff line change @@ -194,6 +194,17 @@ impl ZString {
194
194
}
195
195
}
196
196
197
+ /// Creates a new persistent zend string from a container of bytes.
198
+ #[ allow( clippy:: useless_conversion) ]
199
+ pub fn new_persistent ( s : impl AsRef < [ u8 ] > ) -> Self {
200
+ unsafe {
201
+ let s = s. as_ref ( ) ;
202
+ let ptr =
203
+ phper_zend_string_init ( s. as_ptr ( ) . cast ( ) , s. len ( ) . try_into ( ) . unwrap ( ) , true . into ( ) ) ;
204
+ Self :: from_raw ( ptr)
205
+ }
206
+ }
207
+
197
208
/// Create owned object From raw pointer, usually used in pairs with
198
209
/// `into_raw`.
199
210
///
You can’t perform that action at this time.
0 commit comments