mirror of
https://github.com/msgpack/msgpack-python.git
synced 2025-10-25 14:44:10 +00:00
parent
e419cd8e2d
commit
2c6668941f
2 changed files with 5 additions and 0 deletions
|
|
@ -644,6 +644,8 @@ class Unpacker(object):
|
||||||
key = self._unpack(EX_CONSTRUCT)
|
key = self._unpack(EX_CONSTRUCT)
|
||||||
if self._strict_map_key and type(key) not in (unicode, bytes):
|
if self._strict_map_key and type(key) not in (unicode, bytes):
|
||||||
raise ValueError("%s is not allowed for map key" % str(type(key)))
|
raise ValueError("%s is not allowed for map key" % str(type(key)))
|
||||||
|
if not PY2 and type(key) is str:
|
||||||
|
key = sys.intern(key)
|
||||||
ret[key] = self._unpack(EX_CONSTRUCT)
|
ret[key] = self._unpack(EX_CONSTRUCT)
|
||||||
if self._object_hook is not None:
|
if self._object_hook is not None:
|
||||||
ret = self._object_hook(ret)
|
ret = self._object_hook(ret)
|
||||||
|
|
|
||||||
|
|
@ -192,6 +192,9 @@ static inline int unpack_callback_map_item(unpack_user* u, unsigned int current,
|
||||||
PyErr_Format(PyExc_ValueError, "%.100s is not allowed for map key", Py_TYPE(k)->tp_name);
|
PyErr_Format(PyExc_ValueError, "%.100s is not allowed for map key", Py_TYPE(k)->tp_name);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
if (PyUnicode_CheckExact(k)) {
|
||||||
|
PyUnicode_InternInPlace(&k);
|
||||||
|
}
|
||||||
if (u->has_pairs_hook) {
|
if (u->has_pairs_hook) {
|
||||||
msgpack_unpack_object item = PyTuple_Pack(2, k, v);
|
msgpack_unpack_object item = PyTuple_Pack(2, k, v);
|
||||||
if (!item)
|
if (!item)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue