From 731e8ae150cb0de62e536a3fd71e8d53e28018ef Mon Sep 17 00:00:00 2001 From: Jorge Aparicio <jorge@japaric.io> Date: Thu, 9 Nov 2017 02:09:38 +0100 Subject: [PATCH] rewrite the test for less unsafety --- tests/tsan.rs | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/tests/tsan.rs b/tests/tsan.rs index 6685bd2..dcef81c 100644 --- a/tests/tsan.rs +++ b/tests/tsan.rs @@ -1,3 +1,5 @@ +#![deny(warnings)] + extern crate heapless; use std::thread; @@ -8,14 +10,20 @@ use heapless::RingBuffer; fn once() { static mut RB: RingBuffer<i32, [i32; 4]> = RingBuffer::new(); - unsafe { RB.split() }.0.enqueue(0).unwrap(); + let rb = unsafe { &mut RB }; + + rb.enqueue(0).unwrap(); + + let (mut p, mut c) = rb.split(); - thread::spawn(|| { - unsafe { RB.split() }.0.enqueue(1).unwrap(); + p.enqueue(1).unwrap(); + + thread::spawn(move || { + p.enqueue(1).unwrap(); }); - thread::spawn(|| { - unsafe { RB.split() }.1.dequeue().unwrap(); + thread::spawn(move || { + c.dequeue().unwrap(); }); } @@ -23,16 +31,20 @@ fn once() { fn twice() { static mut RB: RingBuffer<i32, [i32; 8]> = RingBuffer::new(); - unsafe { RB.split() }.0.enqueue(0).unwrap(); - unsafe { RB.split() }.0.enqueue(1).unwrap(); + let rb = unsafe { &mut RB }; + + rb.enqueue(0).unwrap(); + rb.enqueue(1).unwrap(); + + let (mut p, mut c) = rb.split(); - thread::spawn(|| { - unsafe { RB.split() }.0.enqueue(2).unwrap(); - unsafe { RB.split() }.0.enqueue(3).unwrap(); + thread::spawn(move || { + p.enqueue(2).unwrap(); + p.enqueue(3).unwrap(); }); - thread::spawn(|| { - unsafe { RB.split() }.1.dequeue().unwrap(); - unsafe { RB.split() }.1.dequeue().unwrap(); + thread::spawn(move || { + c.dequeue().unwrap(); + c.dequeue().unwrap(); }); } -- GitLab