fixed memory leaks in PathBuf::leak & OsString::leak tests · model-checking/verify-rust-std@20f15f4 (original) (raw)

2 files changed

lines changed

Original file line number Diff line number Diff line change
@@ -26,8 +26,10 @@ fn test_os_string_clear() {
26 26 #[test]
27 27 fn test_os_string_leak() {
28 28 let os_string = OsString::from("have a cake");
29 +let (len, cap) = (os_string.len(), os_string.capacity());
29 30 let leaked = os_string.leak();
30 31 assert_eq!(leaked.as_encoded_bytes(), b"have a cake");
32 +unsafe { drop(String::from_raw_parts(leaked as *mut OsStr as _, len, cap)) }
31 33 }
32 34
33 35 #[test]
Original file line number Diff line number Diff line change
@@ -128,9 +128,12 @@ fn into() {
128 128
129 129 #[test]
130 130 fn test_pathbuf_leak() {
131 -let buf = PathBuf::from("/have/a/cake".to_owned());
131 +let string = "/have/a/cake".to_owned();
132 +let (len, cap) = (string.len(), string.capacity());
133 +let buf = PathBuf::from(string);
132 134 let leaked = buf.leak();
133 135 assert_eq!(leaked.as_os_str().as_encoded_bytes(), b"/have/a/cake");
136 +unsafe { drop(String::from_raw_parts(leaked.as_mut_os_str() as *mut OsStr as _, len, cap)) }
134 137 }
135 138
136 139 #[test]