1
0
mirror of https://github.com/msgpack/msgpack-c.git synced 2025-03-23 09:14:00 +01:00

Use PyUnicode_AsUTF8String() instead of o.encode('utf-8').

This commit is contained in:
INADA Naoki 2010-10-07 03:02:02 +09:00
parent 77a7d3d26a
commit 90da951a6f

@ -7,6 +7,7 @@ cdef extern from "Python.h":
cdef object PyBytes_FromStringAndSize(const_char_ptr b, Py_ssize_t len) cdef object PyBytes_FromStringAndSize(const_char_ptr b, Py_ssize_t len)
cdef PyObject* Py_True cdef PyObject* Py_True
cdef PyObject* Py_False cdef PyObject* Py_False
cdef object PyUnicode_AsUTF8String(object)
cdef long long PyLong_AsLongLong(object o) cdef long long PyLong_AsLongLong(object o)
cdef unsigned long long PyLong_AsUnsignedLongLong(object o) cdef unsigned long long PyLong_AsUnsignedLongLong(object o)
@ -105,7 +106,7 @@ cdef class Packer(object):
if ret == 0: if ret == 0:
ret = msgpack_pack_raw_body(&self.pk, rawval, len(o)) ret = msgpack_pack_raw_body(&self.pk, rawval, len(o))
elif PyUnicode_Check(o): elif PyUnicode_Check(o):
o = o.encode('utf-8') o = PyUnicode_AsUTF8String(o)
rawval = o rawval = o
ret = msgpack_pack_raw(&self.pk, len(o)) ret = msgpack_pack_raw(&self.pk, len(o))
if ret == 0: if ret == 0:
@ -169,7 +170,7 @@ cdef extern from "unpack.h":
object template_data(template_context* ctx) object template_data(template_context* ctx)
def unpackb(object packed_bytes): def unpackb(bytes packed_bytes):
"""Unpack packed_bytes to object. Returns an unpacked object.""" """Unpack packed_bytes to object. Returns an unpacked object."""
cdef const_char_ptr p = packed_bytes cdef const_char_ptr p = packed_bytes
cdef template_context ctx cdef template_context ctx
@ -232,7 +233,7 @@ cdef class Unpacker(object):
cdef object file_like cdef object file_like
cdef int read_size cdef int read_size
cdef object waiting_bytes cdef object waiting_bytes
cdef int use_list cdef bint use_list
def __cinit__(self): def __cinit__(self):
self.buf = NULL self.buf = NULL
@ -241,7 +242,7 @@ cdef class Unpacker(object):
if self.buf: if self.buf:
free(self.buf); free(self.buf);
def __init__(self, file_like=None, int read_size=0, use_list=0): def __init__(self, file_like=None, int read_size=0, bint use_list=0):
if read_size == 0: if read_size == 0:
read_size = 1024*1024 read_size = 1024*1024
self.use_list = use_list self.use_list = use_list