summaryrefslogtreecommitdiff
path: root/msgpack/unpack.h
diff options
context:
space:
mode:
Diffstat (limited to 'msgpack/unpack.h')
-rw-r--r--msgpack/unpack.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/msgpack/unpack.h b/msgpack/unpack.h
index 453ec2b..0586ca8 100644
--- a/msgpack/unpack.h
+++ b/msgpack/unpack.h
@@ -23,6 +23,8 @@ typedef struct unpack_user {
int use_list;
PyObject *object_hook;
PyObject *list_hook;
+ const char *encoding;
+ const char *unicode_errors;
} unpack_user;
@@ -197,7 +199,11 @@ static inline int template_callback_map_end(unpack_user* u, msgpack_unpack_objec
static inline int template_callback_raw(unpack_user* u, const char* b, const char* p, unsigned int l, msgpack_unpack_object* o)
{
PyObject *py;
- py = PyBytes_FromStringAndSize(p, l);
+ if(u->encoding) {
+ py = PyUnicode_Decode(p, l, u->encoding, u->unicode_errors);
+ } else {
+ py = PyBytes_FromStringAndSize(p, l);
+ }
if (!py)
return -1;
*o = py;