File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -161,16 +161,20 @@ impl<'de, 'a> Visitor<'de> for JsonValue {
161161 {
162162 let dict_ptr = unsafe { pyo3:: ffi:: PyDict_New ( ) } ;
163163 while let Some ( ( key, value) ) = map. next_entry_seed ( PhantomData :: < Cow < str > > , self ) ? {
164- let _ = unsafe {
165- pyo3:: ffi:: PyDict_SetItem (
166- dict_ptr,
167- pyo3:: ffi:: PyUnicode_FromStringAndSize (
168- key. as_ptr ( ) as * const c_char ,
169- key. len ( ) as pyo3:: ffi:: Py_ssize_t ,
170- ) ,
171- value,
164+ let pykey = unsafe {
165+ pyo3:: ffi:: PyUnicode_FromStringAndSize (
166+ key. as_ptr ( ) as * const c_char ,
167+ key. len ( ) as pyo3:: ffi:: Py_ssize_t ,
172168 )
173169 } ;
170+ let _ = unsafe { pyo3:: ffi:: PyDict_SetItem ( dict_ptr, pykey, value) } ;
171+ // counter Py_INCREF in insertdict
172+ unsafe {
173+ pyo3:: ffi:: Py_DECREF ( pykey) ;
174+ if std:: intrinsics:: likely ( value != typeref:: NONE ) {
175+ pyo3:: ffi:: Py_DECREF ( value)
176+ }
177+ } ;
174178 }
175179 Ok ( dict_ptr)
176180 }
You can’t perform that action at this time.
0 commit comments