From 4158b579661040da53faee9043a78a7fa238a455 Mon Sep 17 00:00:00 2001 From: Jan Teske Date: Thu, 15 Jun 2023 16:27:44 +0200 Subject: [PATCH] merge_batcher: fix a Miri warning This commit fixes a Miri error on `push_unchecked`. AFAICT, the issue was that the previous implementation wrote the new vector element before it increased the length of the vector, so the new element would be written to 'invalid' memory. Doing the lenght increase first fixes this. --- src/trace/implementations/merge_batcher.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/trace/implementations/merge_batcher.rs b/src/trace/implementations/merge_batcher.rs index f0d96beff..6815e8072 100644 --- a/src/trace/implementations/merge_batcher.rs +++ b/src/trace/implementations/merge_batcher.rs @@ -125,9 +125,9 @@ where #[inline] unsafe fn push_unchecked(vec: &mut Vec, element: T) { debug_assert!(vec.len() < vec.capacity()); - let len = vec.len(); - ::std::ptr::write(vec.get_unchecked_mut(len), element); - vec.set_len(len + 1); + let idx = vec.len(); + vec.set_len(idx + 1); + ::std::ptr::write(vec.get_unchecked_mut(idx), element); } pub struct MergeSorter {