Skip to content

Commit 6f02d25

Browse files
committed
corresponding change to cython implementation
1 parent 10cd2d2 commit 6f02d25

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

msgpack/_packer.pyx

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -136,12 +136,20 @@ cdef class Packer(object):
136136
elif PyLong_Check(o):
137137
# PyInt_Check(long) is True for Python 3.
138138
# Sow we should test long before int.
139-
if o > 0:
140-
ullval = o
141-
ret = msgpack_pack_unsigned_long_long(&self.pk, ullval)
142-
else:
143-
llval = o
144-
ret = msgpack_pack_long_long(&self.pk, llval)
139+
try:
140+
if o > 0:
141+
ullval = o
142+
ret = msgpack_pack_unsigned_long_long(&self.pk, ullval)
143+
else:
144+
llval = o
145+
ret = msgpack_pack_long_long(&self.pk, llval)
146+
except OverflowError, oe:
147+
if not default_used and self._default is not None:
148+
o = self._default(o)
149+
default_used = True
150+
continue
151+
else:
152+
raise
145153
elif PyInt_Check(o):
146154
longval = o
147155
ret = msgpack_pack_long(&self.pk, longval)

0 commit comments

Comments
 (0)