@@ -65,7 +65,8 @@ impl<'p> Serialize for SerializePyObject {
6565 {
6666 let obj_ptr = unsafe { ( * self . ptr ) . ob_type } ;
6767 if unsafe { obj_ptr == STR_PTR } {
68- let mut str_size: pyo3:: ffi:: Py_ssize_t = unsafe { std:: mem:: uninitialized ( ) } ;
68+ let mut str_size: pyo3:: ffi:: Py_ssize_t =
69+ unsafe { std:: mem:: MaybeUninit :: uninit ( ) . assume_init ( ) } ;
6970 let uni =
7071 unsafe { pyo3:: ffi:: PyUnicode_AsUTF8AndSize ( self . ptr , & mut str_size) as * const u8 } ;
7172 if unsafe { std:: intrinsics:: unlikely ( uni. is_null ( ) ) } {
@@ -95,9 +96,12 @@ impl<'p> Serialize for SerializePyObject {
9596 } else if unsafe { obj_ptr == DICT_PTR } {
9697 let mut map = serializer. serialize_map ( None ) . unwrap ( ) ;
9798 let mut pos = 0isize ;
98- let mut str_size: pyo3:: ffi:: Py_ssize_t = unsafe { std:: mem:: uninitialized ( ) } ;
99- let mut key: * mut pyo3:: ffi:: PyObject = unsafe { std:: mem:: uninitialized ( ) } ;
100- let mut value: * mut pyo3:: ffi:: PyObject = unsafe { std:: mem:: uninitialized ( ) } ;
99+ let mut str_size: pyo3:: ffi:: Py_ssize_t =
100+ unsafe { std:: mem:: MaybeUninit :: uninit ( ) . assume_init ( ) } ;
101+ let mut key: * mut pyo3:: ffi:: PyObject =
102+ unsafe { std:: mem:: MaybeUninit :: uninit ( ) . assume_init ( ) } ;
103+ let mut value: * mut pyo3:: ffi:: PyObject =
104+ unsafe { std:: mem:: MaybeUninit :: uninit ( ) . assume_init ( ) } ;
101105 while unsafe { pyo3:: ffi:: PyDict_Next ( self . ptr , & mut pos, & mut key, & mut value) != 0 } {
102106 if unsafe { std:: intrinsics:: unlikely ( ( * key) . ob_type != STR_PTR ) } {
103107 return Err ( ser:: Error :: custom ( "Dict key must be str" ) ) ;
0 commit comments