From bb4cfebd31ad44bd0a31e0959e145fced3078760 Mon Sep 17 00:00:00 2001 From: Joe Crayne Date: Thu, 30 May 2019 01:52:32 -0400 Subject: Fix updateBack ring-buffer bug. --- RingBuffer.hs | 6 ++++-- 1 file 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 updateBack :: RingBuffer u -> u -> IO () updateBack r upd = do - back <- readIORef $ rBack r - updateBuffer (rBuffer r) back upd + size <- readIORef $ rSize r + when (size > 0) $ do + back <- readIORef $ rBack r + updateBuffer (rBuffer r) (mod (back + ringCapacity r - 1) (ringCapacity r)) upd -- cgit v1.2.3