diff --git a/Sources/Plasma/FeatureLib/pfPython/pyGlueHelpers.cpp b/Sources/Plasma/FeatureLib/pfPython/pyGlueHelpers.cpp index 97c75486..b651b3c0 100644 --- a/Sources/Plasma/FeatureLib/pfPython/pyGlueHelpers.cpp +++ b/Sources/Plasma/FeatureLib/pfPython/pyGlueHelpers.cpp @@ -49,14 +49,18 @@ plString PyString_AsStringEx(PyObject* obj) { if (PyString_Check(obj)) return plString::FromUtf8(PyString_AsString(obj)); - else if (PyUnicode_Check(obj)) - { - PyObject* utf8 = PyUnicode_AsUTF8String(obj); - plString str = plString::FromUtf8(PyString_AsString(utf8)); - Py_DECREF(utf8); - return str; - } else - return plString::Null; + + if (PyUnicode_Check(obj)) { +#if (Py_UNICODE_SIZE == 2) + return plString::FromUtf16(reinterpret_cast(PyUnicode_AsUnicode(obj))); +#elif (Py_UNICODE_SIZE == 4) + return plString::FromUtf32(reinterpret_cast(PyUnicode_AsUnicode(obj))); +#else +# error "Py_UNICODE is an unexpected size" +#endif + } + + return plString::Null; } bool PyString_CheckEx(PyObject* obj)