@@ -5,10 +5,10 @@ import qualified Data.Streaming.ByteString.Builder.Buffer as B (Buffer (..))
55import Data.Word (Word8)
66import Data.IORef (IORef, newIORef, readIORef, writeIORef)
77import Data.ByteString (ByteString, empty, length)
8−import Data.ByteString.Internal (ByteString(PS), mallocByteString, c_free_finalizer)
8+import Data.ByteString.Internal (ByteString(PS), mallocByteString)
99import Data.ByteString.Unsafe (unsafeTake, unsafeDrop)
1010import Foreign.ForeignPtr (newForeignPtr, newForeignPtr_, withForeignPtr)
11−import Foreign.Marshal.Alloc (mallocBytes, free)
11+import Foreign.Marshal.Alloc (mallocBytes, free, finalizerFree)
1212import Foreign.Ptr (Ptr, castPtr, plusPtr)
1313
1414largeBufferSize :: Int
@@ -24,7 +24,7 @@ newBufferPool = newIORef Data.ByteString.empty
2424mallocBuffer :: Int -> IO ByteString
2525mallocBuffer size = do
2626 ptr <- mallocBytes size
27− fptr <- newForeignPtr c_free_finalizer ptr
27+ fptr <- newForeignPtr finalizerFree ptr
2828 return $! PS fptr 0 size
2929{-# INLINE mallocBuffer #-}
3030
@@ -41,7 +41,7 @@ usefulBuffer buffer = Data.ByteString.length buffer >= minBufferSize
4141getBuffer :: BufferPool -> IO ByteString
4242getBuffer pool = do
4343 buffer <- readIORef pool
44− if usefulBuffer buffer then return buffer else createBuffer largeBufferSize
44+ if usefulBuffer buffer then return buffer else mallocBuffer largeBufferSize
4545{-# INLINE getBuffer #-}
4646
4747putBuffer :: BufferPool -> ByteString -> IO ()