@@ -139,11 +139,19 @@ cdef class Packer(object):
139139 ret = msgpack_pack_raw(& self .pk, len (o))
140140 if ret == 0 :
141141 ret = msgpack_pack_raw_body(& self .pk, rawval, len (o))
142- elif PyDict_Check (o):
142+ elif PyDict_CheckExact (o):
143143 d = < dict > o
144144 ret = msgpack_pack_map(& self .pk, len (d))
145145 if ret == 0 :
146- for k,v in d.iteritems():
146+ for k, v in d.iteritems():
147+ ret = self ._pack(k, nest_limit- 1 )
148+ if ret != 0 : break
149+ ret = self ._pack(v, nest_limit- 1 )
150+ if ret != 0 : break
151+ elif PyDict_Check(o):
152+ ret = msgpack_pack_map(& self .pk, len (o))
153+ if ret == 0 :
154+ for k, v in o.items():
147155 ret = self ._pack(k, nest_limit- 1 )
148156 if ret != 0 : break
149157 ret = self ._pack(v, nest_limit- 1 )
@@ -332,7 +340,9 @@ cdef class Unpacker(object):
332340
333341 def __init__ (self , file_like = None , Py_ssize_t read_size = 0 , bint use_list = 0 ,
334342 object object_hook = None , object list_hook = None ,
335- encoding = None , unicode_errors = ' strict' , int max_buffer_size = 0 ):
343+ encoding = None , unicode_errors = ' strict' , int max_buffer_size = 0 ,
344+ object object_pairs_hook = None ,
345+ ):
336346 self .use_list = use_list
337347 self .file_like = file_like
338348 if file_like:
0 commit comments