@@ -78,12 +78,18 @@ import Control.Monad (when)
78
78
import Control.Exception (Exception , throw , assert )
79
79
import Control.Monad.ST.Lazy hiding (stToIO )
80
80
import Control.Monad.ST.Strict (stToIO )
81
+ #if __GLASGOW_HASKELL__ >= 702
82
+ import qualified Control.Monad.ST.Unsafe as Unsafe (unsafeIOToST )
83
+ #else
84
+ import qualified Control.Monad.ST.Strict as Unsafe (unsafeIOToST )
85
+ #endif
81
86
import Data.Typeable (Typeable )
82
87
import qualified Data.ByteString.Lazy as L
83
88
import qualified Data.ByteString.Lazy.Internal as L
84
89
import qualified Data.ByteString as S
85
90
import qualified Data.ByteString.Internal as S
86
91
import Data.Word (Word8 )
92
+ import GHC.IO (noDuplicate )
87
93
88
94
import qualified Codec.Compression.Zlib.Stream as Stream
89
95
import Codec.Compression.Zlib.Stream (Stream )
@@ -733,7 +739,7 @@ mkStateIO = stToIO Stream.mkState
733
739
734
740
runStreamST :: Stream a -> Stream. State s -> ST s (a , Stream. State s )
735
741
runStreamIO :: Stream a -> Stream. State RealWorld -> IO (a , Stream. State RealWorld )
736
- runStreamST strm zstate = strictToLazyST (Stream. runStream strm zstate)
742
+ runStreamST strm zstate = strictToLazyST (Unsafe. unsafeIOToST noDuplicate >> Stream. runStream strm zstate)
737
743
runStreamIO strm zstate = stToIO (Stream. runStream strm zstate)
738
744
739
745
compressStreamIO :: Stream. Format -> CompressParams -> CompressStream IO
0 commit comments