summaryrefslogtreecommitdiff
path: root/haskell/src/Data
diff options
context:
space:
mode:
authorHideyuki Tanaka <tanaka.hideyuki@gmail.com>2010-05-30 19:11:04 +0900
committerHideyuki Tanaka <tanaka.hideyuki@gmail.com>2010-05-30 19:11:04 +0900
commite61dc76ae1abb6235d09b52ad24383ccd75d5222 (patch)
tree4cbb877ee42bddbb4d0f67f0b0f47277666ce5d6 /haskell/src/Data
parent0da22193bd628690bfc58d4c36d6d48493fa7f51 (diff)
downloadmsgpack-python-e61dc76ae1abb6235d09b52ad24383ccd75d5222.tar.gz
fix peek object
Diffstat (limited to 'haskell/src/Data')
-rw-r--r--haskell/src/Data/MessagePack/Base.hsc18
1 files changed, 10 insertions, 8 deletions
diff --git a/haskell/src/Data/MessagePack/Base.hsc b/haskell/src/Data/MessagePack/Base.hsc
index 8c7b9f5..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)