From f3857e207b5339a70b834d0575021f57432e272d Mon Sep 17 00:00:00 2001 From: Andrew Udvare Date: Fri, 31 Jan 2014 15:24:56 -0800 Subject: Hopefully bridge between Python 3 and 2 for strings --- cython/plist.pyx | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'cython') diff --git a/cython/plist.pyx b/cython/plist.pyx index 4eccdb1..95f9be7 100644 --- a/cython/plist.pyx +++ b/cython/plist.pyx @@ -2,6 +2,15 @@ cimport cpython cimport libc.stdlib from libc.stdint cimport * +cdef _from_string_and_size(char *s, size_t length): + if PY_MAJOR_VERSION < 3 or s == NULL: + return s[:length] + + if s == NULL: + return s[:length] + else: + return s[:length].decode("ascii") + cdef extern from *: ctypedef enum plist_type: PLIST_BOOLEAN, @@ -115,7 +124,7 @@ cdef class Node: plist_to_bin(self._c_node, &out, &length) try: - return cpython.PyString_FromStringAndSize(out, length) + return _from_string_and_size(out, length) finally: if out != NULL: libc.stdlib.free(out) @@ -550,7 +559,7 @@ cdef class Data(Node): plist_get_data_val(self._c_node, &val, &length) try: - return cpython.PyString_FromStringAndSize(val, length) + return _from_string_and_size(val, length) finally: libc.stdlib.free(val) -- cgit v1.1-32-gdbae