diff -rN -u old-HsSyck-0.44/Data/Yaml/Syck.hsc new-HsSyck-0.44/Data/Yaml/Syck.hsc --- old-HsSyck-0.44/Data/Yaml/Syck.hsc 2008-12-13 09:56:36.000000000 +0100 +++ new-HsSyck-0.44/Data/Yaml/Syck.hsc 2008-12-13 09:56:36.000000000 +0100 @@ -25,7 +25,7 @@ import qualified Data.HashTable as Hash import qualified Data.ByteString.Char8 as Buf import Data.ByteString.Char8 (useAsCStringLen, useAsCString) -import Data.ByteString.Unsafe (unsafePackCString, unsafePackCStringLen) +import Data.ByteString (packCString, packCStringLen) type Buf = Buf.ByteString type YamlTag = Maybe Buf @@ -168,7 +168,7 @@ outputCallbackPS :: IORef [Buf] -> SyckEmitter -> CString -> CLong -> IO () outputCallbackPS out emitter buf len = do - str <- unsafePackCStringLen (buf, fromEnum len) + str <- packCStringLen (buf, fromEnum len) str `seq` modifyIORef out (str:) outputCallback :: SyckEmitter -> CString -> CLong -> IO () @@ -349,7 +349,7 @@ syckNodeTag syckNode = do tag <- #{peek SyckNode, type_id} syckNode if (tag == nullPtr) then (return Nothing) else do - p <- unsafePackCString tag + p <- packCString tag return $! case Buf.elemIndex '/' p of Just n -> let { pre = Buf.take n p; post = Buf.drop (n+1) p } in Just $ Buf.concat [_tagLiteral, pre, _colonLiteral, post] @@ -386,7 +386,7 @@ parseNode SyckStr _ syckNode len nid = do tag <- syckNodeTag syckNode cstr <- syck_str_read syckNode - buf <- unsafePackCStringLen (cstr, fromEnum len) + buf <- packCStringLen (cstr, fromEnum len) let node = nilNode{ n_elem = EStr buf, n_tag = tag, n_id = nid } if tag == Nothing && Buf.length buf == 1 && Buf.index buf 0 == '~' then do