Ticket #5909: segfault.hs

File segfault.hs, 678 bytes (added by akio, 2 years ago)

test case

Line 
1{-# LANGUAGE BangPatterns #-}
2
3import qualified Data.ByteString.Lazy  as L
4import qualified Data.IntMap as Map
5
6data State = State Int (Map.IntMap ())
7
8main :: IO ()
9main = do
10    _ <- srloop (initialState 2 17) L.empty
11    return ()
12
13initialState :: Int -> Int -> State
14initialState _ _ = State 0 Map.empty
15
16srloop :: State -> L.ByteString -> IO [()]
17srloop = loop
18    where
19        loop s str = do
20            (s1, rm, outs) <- g s [] str
21            if null outs
22                then loop s rm
23                else return outs
24
25{-# NOINLINE g #-}
26g :: State -> [()] -> L.ByteString -> IO (State, L.ByteString, [()])
27g !s@(State _ !_) list str = return (s, str, reverse list)