on master help sign in
Fix a corner case in lazy text search.
4544b39Bryan O'Sullivan
Data/Text/Lazy/Search.hs+3−2
@@ -77,9 +77,10 @@ indices needle@(Chunk n ns) _haystack@(Chunk k ks)
77 go !(g::Int64) !i !msk !skp
77 go !(g::Int64) !i !msk !skp
78 | i >= xlast = case xs of
78 | i >= xlast = case xs of
79 Empty -> (msk .|. swizzle z) :*: skp
79 Empty -> (msk .|. swizzle z) :*: skp
80− Chunk y ys -> buildTable y ys g 0 msk skp
80+ Chunk y ys -> buildTable y ys g 0 msk' skp'
81− | otherwise = go (g+1) (i+1) (msk .|. swizzle c) skp'
81+ | otherwise = go (g+1) (i+1) msk' skp'
82 where c = A.unsafeIndex xarr (xoff+i)
82 where c = A.unsafeIndex xarr (xoff+i)
83+ msk' = msk .|. swizzle c
83 skp' | c == z = nlen - g - 2
84 skp' | c == z = nlen - g - 2
84 | otherwise = skp
85 | otherwise = skp
85 xlast = xlen - 1
86 xlast = xlen - 1