python: Fix segmentation fault when default returns it's argument.

This commit is contained in:
INADA Naoki 2011-01-29 23:22:41 +09:00
parent 76b8c3250b
commit 718a3efd64
2 changed files with 3 additions and 3 deletions

View File

@ -118,9 +118,9 @@ cdef class Packer(object):
for v in o:
ret = self._pack(v, nest_limit-1)
if ret != 0: break
elif self._default is not None:
elif self._default:
o = self._default(o)
ret = self._pack(o, nest_limit)
ret = self._pack(o, nest_limit-1)
else:
raise TypeError("can't serialize %r" % (o,))
return ret

View File

@ -26,7 +26,7 @@ def test_decode_hook():
unpacked = unpacks(packed, object_hook=_decode_complex)
eq_(unpacked[1], 1+2j)
@raises(TypeError)
@raises(ValueError)
def test_bad_hook():
packed = packs([3, 1+2j], default=lambda o: o)
unpacked = unpacks(packed)