diff options
author | Joe Crayne <joe@jerkface.net> | 2019-05-30 01:52:32 -0400 |
---|---|---|
committer | Joe Crayne <joe@jerkface.net> | 2019-05-30 01:52:32 -0400 |
commit | bb4cfebd31ad44bd0a31e0959e145fced3078760 (patch) | |
tree | acf9171677c6181a6d2ba07e0248abd39d197f25 | |
parent | 9943fdbf293248a095a5248e1652da2a38e41760 (diff) |
Fix updateBack ring-buffer bug.
-rw-r--r-- | RingBuffer.hs | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/RingBuffer.hs b/RingBuffer.hs index b2779d7..64b0624 100644 --- a/RingBuffer.hs +++ b/RingBuffer.hs | |||
@@ -66,5 +66,7 @@ pushBack r upd = do | |||
66 | 66 | ||
67 | updateBack :: RingBuffer u -> u -> IO () | 67 | updateBack :: RingBuffer u -> u -> IO () |
68 | updateBack r upd = do | 68 | updateBack r upd = do |
69 | back <- readIORef $ rBack r | 69 | size <- readIORef $ rSize r |
70 | updateBuffer (rBuffer r) back upd | 70 | when (size > 0) $ do |
71 | back <- readIORef $ rBack r | ||
72 | updateBuffer (rBuffer r) (mod (back + ringCapacity r - 1) (ringCapacity r)) upd | ||