Skip to content

Commit 454185c

Browse files
authored
Merge pull request #8 from ndmitchell/master
#7, remove a segfault cause by duplicating streaming computations
2 parents 8c0b113 + 857980b commit 454185c

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

Codec/Compression/Zlib/Internal.hs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,18 @@ import Control.Monad (when)
7878
import Control.Exception (Exception, throw, assert)
7979
import Control.Monad.ST.Lazy hiding (stToIO)
8080
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
8186
import Data.Typeable (Typeable)
8287
import qualified Data.ByteString.Lazy as L
8388
import qualified Data.ByteString.Lazy.Internal as L
8489
import qualified Data.ByteString as S
8590
import qualified Data.ByteString.Internal as S
8691
import Data.Word (Word8)
92+
import GHC.IO (noDuplicate)
8793

8894
import qualified Codec.Compression.Zlib.Stream as Stream
8995
import Codec.Compression.Zlib.Stream (Stream)
@@ -733,7 +739,7 @@ mkStateIO = stToIO Stream.mkState
733739

734740
runStreamST :: Stream a -> Stream.State s -> ST s (a, Stream.State s)
735741
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)
737743
runStreamIO strm zstate = stToIO (Stream.runStream strm zstate)
738744

739745
compressStreamIO :: Stream.Format -> CompressParams -> CompressStream IO

changelog

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
2+
* Fix a segfault when reading the stream multithreaded, #7
3+
14
0.6.1.1 Duncan Coutts <duncan@community.haskell.org> April 2015
25

36
* Fixed building with GHC 7.0 and 7.2

0 commit comments

Comments
 (0)