summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUENISHI Kota <kuenishi+github@gmail.com>2010-05-31 00:26:49 +0900
committerUENISHI Kota <kuenishi+github@gmail.com>2010-05-31 00:26:49 +0900
commitf40ebe5b433fd2a838eff0ce7f872ee01404e8ac (patch)
treecdbadd389e96d966d0ebb94fe41784627f84e534
parentd7d78d9a2b77df0661fb0cd6b0be7b565e6f7a25 (diff)
parent5a12d36a0a68e97dcdd2e030486f6a67138c8b44 (diff)
downloadmsgpack-python-f40ebe5b433fd2a838eff0ce7f872ee01404e8ac.tar.gz
Merge branch 'master' of ssh://github.com/msgpack/msgpack
-rw-r--r--haskell/msgpack.cabal2
-rw-r--r--haskell/src/Data/MessagePack/Base.hsc19
-rw-r--r--haskell/src/Data/MessagePack/Monad.hs2
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