py api - added PyC_UnicodeFromByteAndSize() to match PyUnicode_FromStringAndSize()
[blender.git] / source / blender / python / generic / py_capi_utils.c
index 575495e186e3d7d8a2d7ea2379057b016a934acb..587ac69071e46963d0bfcb034a944c7616df5241 100644 (file)
@@ -386,9 +386,9 @@ const char *PyC_UnicodeAsByte(PyObject *py_str, PyObject **coerce)
        }
 }
 
        }
 }
 
-PyObject *PyC_UnicodeFromByte(const char *str)
+PyObject *PyC_UnicodeFromByteAndSize(const char *str, Py_ssize_t size)
 {
 {
-       PyObject *result= PyUnicode_FromString(str);
+    PyObject *result= PyUnicode_FromStringAndSize(str, size);
        if (result) {
                /* 99% of the time this is enough but we better support non unicode
                 * chars since blender doesnt limit this */
        if (result) {
                /* 99% of the time this is enough but we better support non unicode
                 * chars since blender doesnt limit this */
@@ -397,11 +397,16 @@ PyObject *PyC_UnicodeFromByte(const char *str)
        else {
                PyErr_Clear();
                /* this means paths will always be accessible once converted, on all OS's */
        else {
                PyErr_Clear();
                /* this means paths will always be accessible once converted, on all OS's */
-               result= PyUnicode_DecodeFSDefault(str);
+               result= PyUnicode_DecodeFSDefaultAndSize(str, size);
                return result;
        }
 }
 
                return result;
        }
 }
 
+PyObject *PyC_UnicodeFromByte(const char *str)
+{
+       return PyC_UnicodeFromByteAndSize(str, strlen(str));
+}
+
 /*****************************************************************************
 * Description: This function creates a new Python dictionary object.
 * note: dict is owned by sys.modules["__main__"] module, reference is borrowed
 /*****************************************************************************
 * Description: This function creates a new Python dictionary object.
 * note: dict is owned by sys.modules["__main__"] module, reference is borrowed