diff options
| author | Zachary S <zasample18+github@gmail.com> | 2024-07-06 22:30:37 -0500 |
|---|---|---|
| committer | Zachary S <zasample18+github@gmail.com> | 2024-07-06 22:35:19 -0500 |
| commit | e0ed696d2f1ce49b28be12879570dd402a354e2e (patch) | |
| tree | b2f73b548bbc810514858bafb5fdeef8615e8ab3 /library/alloc/src/vec | |
| parent | 93e3c00670a8362ce384ed7911e547f87982af77 (diff) | |
| download | rust-e0ed696d2f1ce49b28be12879570dd402a354e2e.tar.gz rust-e0ed696d2f1ce49b28be12879570dd402a354e2e.zip | |
Mitigate focused memory leaks in `alloc` doctests for Miri.
If/when `-Zmiri-disable-leak-check` is able to be used at test-granularity, it should applied to these tests instead of unleaking.
Diffstat (limited to 'library/alloc/src/vec')
| -rw-r--r-- | library/alloc/src/vec/into_iter.rs | 7 | ||||
| -rw-r--r-- | library/alloc/src/vec/mod.rs | 6 |
2 files changed, 12 insertions, 1 deletions
diff --git a/library/alloc/src/vec/into_iter.rs b/library/alloc/src/vec/into_iter.rs index 3bd89eaa6cb..10f62e4bb62 100644 --- a/library/alloc/src/vec/into_iter.rs +++ b/library/alloc/src/vec/into_iter.rs @@ -120,10 +120,15 @@ impl<T, A: Allocator> IntoIter<T, A> { /// This is roughly equivalent to the following, but more efficient /// /// ``` - /// # let mut into_iter = Vec::<u8>::with_capacity(10).into_iter(); + /// # let mut vec = Vec::<u8>::with_capacity(10); + /// # let ptr = vec.as_mut_ptr(); + /// # let mut into_iter = vec.into_iter(); /// let mut into_iter = std::mem::replace(&mut into_iter, Vec::new().into_iter()); /// (&mut into_iter).for_each(drop); /// std::mem::forget(into_iter); + /// # // FIXME(https://github.com/rust-lang/miri/issues/3670): + /// # // use -Zmiri-disable-leak-check instead of unleaking in tests meant to leak. + /// # drop(unsafe { Vec::<u8>::from_raw_parts(ptr, 0, 10) }); /// ``` /// /// This method is used by in-place iteration, refer to the vec::in_place_collect diff --git a/library/alloc/src/vec/mod.rs b/library/alloc/src/vec/mod.rs index f1706e31bb8..0b91151c386 100644 --- a/library/alloc/src/vec/mod.rs +++ b/library/alloc/src/vec/mod.rs @@ -1473,6 +1473,9 @@ impl<T, A: Allocator> Vec<T, A> { /// // 2. `0 <= capacity` always holds whatever `capacity` is. /// unsafe { /// vec.set_len(0); + /// # // FIXME(https://github.com/rust-lang/miri/issues/3670): + /// # // use -Zmiri-disable-leak-check instead of unleaking in tests meant to leak. + /// # vec.set_len(3); /// } /// ``` /// @@ -2391,6 +2394,9 @@ impl<T, A: Allocator> Vec<T, A> { /// let static_ref: &'static mut [usize] = x.leak(); /// static_ref[0] += 1; /// assert_eq!(static_ref, &[2, 2, 3]); + /// # // FIXME(https://github.com/rust-lang/miri/issues/3670): + /// # // use -Zmiri-disable-leak-check instead of unleaking in tests meant to leak. + /// # drop(unsafe { Box::from_raw(static_ref) }); /// ``` #[stable(feature = "vec_leak", since = "1.47.0")] #[inline] |
