@@ -26,7 +26,7 @@ module Text.Libyaml
26import qualified Data.ByteString.Internal as B
26import qualified Data.ByteString.Internal as B
27import qualified Data.ByteString.Char8 as B8
27import qualified Data.ByteString.Char8 as B8
28import qualified Data.ByteString
28import qualified Data.ByteString
29−import Data.ByteString (ByteString)
29+import Data.ByteString (ByteString, packCStringLen)
30import Control.Monad
30import Control.Monad
31import Foreign.C
31import Foreign.C
32import Foreign.Ptr
32import Foreign.Ptr
@@ -246,13 +246,11 @@ getEvent er = do
246 let yvalue' = castPtr yvalue
246 let yvalue' = castPtr yvalue
247 let ytag' = castPtr ytag
247 let ytag' = castPtr ytag
248 let ylen' = fromEnum ylen
248 let ylen' = fromEnum ylen
249− let ylen'' = toEnum $ fromEnum ylen
249+ bs <- packCStringLen (yvalue', ylen')
250− bs <- B.create ylen' $ \dest -> B.memcpy dest yvalue' ylen''
252 if ytag_len' == 0
251 if ytag_len' == 0
253 then return Data.ByteString.empty
252 then return Data.ByteString.empty
254− else B.create ytag_len'
253+ else packCStringLen (ytag', ytag_len')
255− $ \dest -> B.memcpy dest ytag' (toEnum ytag_len')
256 let style = toEnum $ fromEnum ystyle
254 let style = toEnum $ fromEnum ystyle
257 yanchor <- c_get_scalar_anchor er
255 yanchor <- c_get_scalar_anchor er
258 anchor <- if yanchor == nullPtr
256 anchor <- if yanchor == nullPtr