diff options
author | INADA Naoki <methane@users.noreply.github.com> | 2018-01-11 17:02:41 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-11 17:02:41 +0900 |
commit | 5534d0c7af0114db3d27f7b96c82a7fe22ce1e40 (patch) | |
tree | 57d598860b021b723074504bd84391852b376eb9 /msgpack/unpack.h | |
parent | 50ea49c86f5aaff8bb1cd37778b50b13df83ba8f (diff) | |
download | msgpack-python-5534d0c7af0114db3d27f7b96c82a7fe22ce1e40.tar.gz |
Add raw_as_bytes option to Unpacker. (#265)
Diffstat (limited to 'msgpack/unpack.h')
-rw-r--r-- | msgpack/unpack.h | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/msgpack/unpack.h b/msgpack/unpack.h index da2cfb6..8c2fc46 100644 --- a/msgpack/unpack.h +++ b/msgpack/unpack.h @@ -20,9 +20,10 @@ #include "unpack_define.h" typedef struct unpack_user { - int use_list; - PyObject *object_hook; + bool use_list; + bool raw_as_bytes; bool has_pairs_hook; + PyObject *object_hook; PyObject *list_hook; PyObject *ext_hook; const char *encoding; @@ -225,10 +226,13 @@ static inline int unpack_callback_raw(unpack_user* u, const char* b, const char* } PyObject *py; - if(u->encoding) { + + if (u->encoding) { py = PyUnicode_Decode(p, l, u->encoding, u->unicode_errors); - } else { + } else if (u->raw_as_bytes) { py = PyBytes_FromStringAndSize(p, l); + } else { + py = PyUnicode_DecodeUTF8(p, l, NULL); } if (!py) return -1; |