mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-03-25 01:55:39 +01:00
Fix error on packing unsigned long long.
This commit is contained in:
parent
fe2421275d
commit
9015bd4ecf
@ -9,6 +9,8 @@ cdef extern from "Python.h":
|
||||
char* PyString_AsString(object o)
|
||||
int PyMapping_Check(object o)
|
||||
int PySequence_Check(object o)
|
||||
long long PyLong_AsLongLong(object o)
|
||||
unsigned long long PyLong_AsUnsignedLongLong(object o)
|
||||
|
||||
cdef extern from "stdlib.h":
|
||||
void* malloc(size_t)
|
||||
@ -27,17 +29,18 @@ cdef extern from "pack.h":
|
||||
msgpack_packer_write callback
|
||||
|
||||
void msgpack_packer_init(msgpack_packer* pk, void* data, msgpack_packer_write callback)
|
||||
void msgpack_pack_int(msgpack_packer* pk, int d)
|
||||
void msgpack_pack_nil(msgpack_packer* pk)
|
||||
void msgpack_pack_true(msgpack_packer* pk)
|
||||
void msgpack_pack_false(msgpack_packer* pk)
|
||||
void msgpack_pack_long(msgpack_packer* pk, long d)
|
||||
void msgpack_pack_long_long(msgpack_packer* pk, long long d)
|
||||
void msgpack_pack_double(msgpack_packer* pk, double d)
|
||||
void msgpack_pack_array(msgpack_packer* pk, size_t l)
|
||||
void msgpack_pack_map(msgpack_packer* pk, size_t l)
|
||||
void msgpack_pack_raw(msgpack_packer* pk, size_t l)
|
||||
void msgpack_pack_raw_body(msgpack_packer* pk, char* body, size_t l)
|
||||
int msgpack_pack_int(msgpack_packer* pk, int d)
|
||||
int msgpack_pack_nil(msgpack_packer* pk)
|
||||
int msgpack_pack_true(msgpack_packer* pk)
|
||||
int msgpack_pack_false(msgpack_packer* pk)
|
||||
int msgpack_pack_long(msgpack_packer* pk, long d)
|
||||
int msgpack_pack_long_long(msgpack_packer* pk, long long d)
|
||||
int msgpack_pack_unsigned_long_long(msgpack_packer* pk, unsigned long long d)
|
||||
int msgpack_pack_double(msgpack_packer* pk, double d)
|
||||
int msgpack_pack_array(msgpack_packer* pk, size_t l)
|
||||
int msgpack_pack_map(msgpack_packer* pk, size_t l)
|
||||
int msgpack_pack_raw(msgpack_packer* pk, size_t l)
|
||||
int msgpack_pack_raw_body(msgpack_packer* pk, char* body, size_t l)
|
||||
|
||||
|
||||
cdef class Packer(object):
|
||||
@ -103,6 +106,7 @@ cdef class Packer(object):
|
||||
|
||||
cdef __pack(self, object o):
|
||||
cdef long long llval
|
||||
cdef unsigned long long ullval
|
||||
cdef long longval
|
||||
cdef double fval
|
||||
cdef char* rawval
|
||||
@ -114,8 +118,12 @@ cdef class Packer(object):
|
||||
elif o is False:
|
||||
msgpack_pack_false(&self.pk)
|
||||
elif isinstance(o, long):
|
||||
llval = o
|
||||
msgpack_pack_long_long(&self.pk, llval)
|
||||
if o > 0:
|
||||
ullval = PyLong_AsUnsignedLongLong(o)
|
||||
msgpack_pack_unsigned_long_long(&self.pk, ullval)
|
||||
else:
|
||||
llval = PyLong_AsLongLong(o)
|
||||
msgpack_pack_long_long(&self.pk, llval)
|
||||
elif isinstance(o, int):
|
||||
longval = o
|
||||
msgpack_pack_long(&self.pk, longval)
|
||||
|
@ -7,7 +7,7 @@ from msgpack import packs, unpacks
|
||||
|
||||
def check(length, obj):
|
||||
v = packs(obj)
|
||||
assert_equal(len(v), length)
|
||||
assert_equal(len(v), length, "%r length should be %r but get %r" % (obj, length, len(v)))
|
||||
assert_equal(unpacks(v), obj)
|
||||
|
||||
def test_1():
|
||||
|
Loading…
x
Reference in New Issue
Block a user