diff options
| author | UENISHI Kota <kuenishi+github@gmail.com> | 2010-05-31 00:26:49 +0900 |
|---|---|---|
| committer | UENISHI Kota <kuenishi+github@gmail.com> | 2010-05-31 00:26:49 +0900 |
| commit | f40ebe5b433fd2a838eff0ce7f872ee01404e8ac (patch) | |
| tree | cdbadd389e96d966d0ebb94fe41784627f84e534 | |
| parent | d7d78d9a2b77df0661fb0cd6b0be7b565e6f7a25 (diff) | |
| parent | 5a12d36a0a68e97dcdd2e030486f6a67138c8b44 (diff) | |
| download | msgpack-python-f40ebe5b433fd2a838eff0ce7f872ee01404e8ac.tar.gz | |
Merge branch 'master' of ssh://github.com/msgpack/msgpack
| -rw-r--r-- | haskell/msgpack.cabal | 2 | ||||
| -rw-r--r-- | haskell/src/Data/MessagePack/Base.hsc | 19 | ||||
| -rw-r--r-- | haskell/src/Data/MessagePack/Monad.hs | 2 |
3 files changed, 13 insertions, 10 deletions
diff --git a/haskell/msgpack.cabal b/haskell/msgpack.cabal index 31cad3b..82cdb52 100644 --- a/haskell/msgpack.cabal +++ b/haskell/msgpack.cabal @@ -1,5 +1,5 @@ Name: msgpack -Version: 0.2.1 +Version: 0.2.2 License: BSD3 License-File: LICENSE Author: Hideyuki Tanaka diff --git a/haskell/src/Data/MessagePack/Base.hsc b/haskell/src/Data/MessagePack/Base.hsc index 72c421c..b6cdc28 100644 --- a/haskell/src/Data/MessagePack/Base.hsc +++ b/haskell/src/Data/MessagePack/Base.hsc @@ -506,20 +506,22 @@ peekObjectRAW ptr = do peekObjectArray :: Ptr a -> IO Object peekObjectArray ptr = do - size <- (#peek msgpack_object, via.array.size) ptr - p <- (#peek msgpack_object, via.array.ptr) ptr - objs <- mapM (\i -> peekObject $ p `plusPtr` + csize <- (#peek msgpack_object, via.array.size) ptr + let size = fromIntegral (csize :: Word32) + p <- (#peek msgpack_object, via.array.ptr) ptr + objs <- mapM (\i -> peekObject $ p `plusPtr` ((#size msgpack_object) * i)) - [0..size-1] + [0..size-1] return $ ObjectArray objs peekObjectMap :: Ptr a -> IO Object peekObjectMap ptr = do - size <- (#peek msgpack_object, via.map.size) ptr - p <- (#peek msgpack_object, via.map.ptr) ptr - dat <- mapM (\i -> peekObjectKV $ p `plusPtr` + csize <- (#peek msgpack_object, via.map.size) ptr + let size = fromIntegral (csize :: Word32) + p <- (#peek msgpack_object, via.map.ptr) ptr + dat <- mapM (\i -> peekObjectKV $ p `plusPtr` ((#size msgpack_object_kv) * i)) - [0..size-1] + [0..size-1] return $ ObjectMap dat peekObjectKV :: Ptr a -> IO (Object, Object) @@ -560,6 +562,7 @@ unpackObject z dat = allocaBytes (#size msgpack_object) $ \ptr -> BS.useAsCStringLen dat $ \(str, len) -> alloca $ \poff -> do + poke poff 0 ret <- msgpack_unpack str (fromIntegral len) poff z ptr case ret of (#const MSGPACK_UNPACK_SUCCESS) -> do diff --git a/haskell/src/Data/MessagePack/Monad.hs b/haskell/src/Data/MessagePack/Monad.hs index c718b8a..15f21fe 100644 --- a/haskell/src/Data/MessagePack/Monad.hs +++ b/haskell/src/Data/MessagePack/Monad.hs @@ -82,7 +82,7 @@ packToString m = do _ <- runPackerT m pc liftIO $ simpleBufferData sb --- | Execcute given serializer and write byte sequence to Handle. +-- | Execute given serializer and write byte sequence to Handle. packToHandle :: MonadIO m => Handle -> PackerT m r -> m () packToHandle h m = do sb <- packToString m |
