Skip to content
This repository was archived by the owner on Jun 8, 2022. It is now read-only.

Commit 8732352

Browse files
authored
Merge pull request #1 from tari-project/sb-fix-possible-race-cond
Fix for race condition from bus-queue repo
2 parents a21f9ae + 898b432 commit 8732352

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

src/channel.rs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -122,12 +122,15 @@ impl<T> Receiver<T> {
122122

123123
// Reader has not read enough to keep up with (writer - buffer size) so
124124
// set the reader pointer to be (writer - buffer size)
125-
if self.wi.get() - self.ri.get() >= self.size {
126-
self.ri.set(self.wi.get() - self.size);
125+
loop {
126+
let val = self.buffer[self.ri.get() % self.size].load_full().unwrap();
127+
if self.wi.get() - self.ri.get() > self.size {
128+
self.ri.set(self.wi.get() - self.size);
129+
} else {
130+
self.ri.inc();
131+
return Ok(val);
132+
}
127133
}
128-
let val = self.buffer[self.ri.get() % self.size].load_full().unwrap();
129-
self.ri.inc();
130-
Ok(val)
131134
}
132135
}
133136

0 commit comments

Comments
 (0)