@@ -15,6 +15,7 @@ module Streamly.Internal.Data.Serialize.Type
1515-- Imports
1616--------------------------------------------------------------------------------
1717
18+import Control.Monad (when)
1819import Data.List (foldl')
1920import Data.Proxy (Proxy (..))
2021import Streamly.Internal.Data.Unbox (Unbox)
@@ -274,9 +275,14 @@ instance Serialize (Array a) where
274275 addSizeTo i (Array {..}) = i + (arrEnd - arrStart) + 8
275276
276277 {-# INLINE deserializeAt #-}
277− deserializeAt off arr end = do
278− (off1, byteLen) <- deserializeAt off arr end :: IO (Int, Int)
278+ deserializeAt off arr len = do
279+ (off1, byteLen) <- deserializeAt off arr len :: IO (Int, Int)
279280 let off2 = off1 + byteLen
281+ when (off2 > len) $
282+ error
283+ $ "deserializeAt: accessing array at offset = "
284+ ++ show (off2 - 1)
285+ ++ " max valid offset = " ++ show (len - 1)
280286 let slice = MutArray.MutArray arr off1 off2 off2
281287 newArr <- MutArray.clone slice
282288 pure (off2, Array.unsafeFreeze newArr)