X-Git-Url: http://git.bitcoin.ninja/index.cgi?p=ldk-c-bindings;a=blobdiff_plain;f=lightning-c-bindings%2Fsrc%2Fc_types%2Fmod.rs;h=6267b80bc2dd007ba9476f76d01127d2b9a74937;hp=3d45802e8063850cc2f71983e47daeefce11a304;hb=cf371006659446e248fd0625228a5aa0a999e012;hpb=ad08c7133bca23cbd4c5a8a018b92cdd0ec952c8 diff --git a/lightning-c-bindings/src/c_types/mod.rs b/lightning-c-bindings/src/c_types/mod.rs index 3d45802..6267b80 100644 --- a/lightning-c-bindings/src/c_types/mod.rs +++ b/lightning-c-bindings/src/c_types/mod.rs @@ -387,13 +387,15 @@ impl Str { if self.len == 0 { return ""; } std::str::from_utf8(unsafe { std::slice::from_raw_parts(self.chars, self.len) }).unwrap() } - pub(crate) fn into_string(self) -> String { + pub(crate) fn into_string(mut self) -> String { let bytes = if self.len == 0 { Vec::new() } else if self.chars_is_owned { - unsafe { + let ret = unsafe { Box::from_raw(std::slice::from_raw_parts_mut(unsafe { self.chars as *mut u8 }, self.len)) - }.into() + }.into(); + self.chars_is_owned = false; + ret } else { let mut ret = Vec::with_capacity(self.len); ret.extend_from_slice(unsafe { std::slice::from_raw_parts(self.chars, self.len) });