diff --git a/msgpack/unpack.h b/msgpack/unpack.h index 58a2f4f5..7fc14bdd 100644 --- a/msgpack/unpack.h +++ b/msgpack/unpack.h @@ -70,12 +70,7 @@ static inline int unpack_callback_uint32(unpack_user* u, uint32_t d, msgpack_unp static inline int unpack_callback_uint64(unpack_user* u, uint64_t d, msgpack_unpack_object* o) { - PyObject *p; - if (d > LONG_MAX) { - p = PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)d); - } else { - p = PyLong_FromLong((long)d); - } + PyObject *p = PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)d); if (!p) return -1; *o = p; @@ -109,6 +104,8 @@ static inline int unpack_callback_int64(unpack_user* u, int64_t d, msgpack_unpac } else { p = PyLong_FromLong((long)d); } + if (!p) + return -1; *o = p; return 0; }