summaryrefslogtreecommitdiff
path: root/msgpack/unpack.h
diff options
context:
space:
mode:
authorINADA Naoki <methane@users.noreply.github.com>2018-01-11 17:02:41 +0900
committerGitHub <noreply@github.com>2018-01-11 17:02:41 +0900
commit5534d0c7af0114db3d27f7b96c82a7fe22ce1e40 (patch)
tree57d598860b021b723074504bd84391852b376eb9 /msgpack/unpack.h
parent50ea49c86f5aaff8bb1cd37778b50b13df83ba8f (diff)
downloadmsgpack-python-5534d0c7af0114db3d27f7b96c82a7fe22ce1e40.tar.gz
Add raw_as_bytes option to Unpacker. (#265)
Diffstat (limited to 'msgpack/unpack.h')
-rw-r--r--msgpack/unpack.h12
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;