diff options
author | Campbell Barton <ideasman42@gmail.com> | 2020-05-05 06:46:58 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2020-05-05 06:46:58 +0300 |
commit | 75be3bc4b940a9026a52be2024ec09b4dee4d937 (patch) | |
tree | 7324d304ce04bb3bfdd60f31ad91e864051cbe0b | |
parent | 375a50dad9c5829e2ed205216e0bb7317635868e (diff) | |
parent | ac6be6759ecc6c6503e8785ee405c003e0ca2fe5 (diff) |
Merge branch 'blender-v2.83-release'
-rw-r--r-- | intern/cycles/blender/blender_python.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/intern/cycles/blender/blender_python.cpp b/intern/cycles/blender/blender_python.cpp index 89bcebda193..8c7c0bc1daa 100644 --- a/intern/cycles/blender/blender_python.cpp +++ b/intern/cycles/blender/blender_python.cpp @@ -60,6 +60,12 @@ void *pylong_as_voidptr_typesafe(PyObject *object) return PyLong_AsVoidPtr(object); } +PyObject *pyunicode_from_string(const char *str) +{ + /* Ignore errors if device API returns invalid UTF-8 strings. */ + return PyUnicode_DecodeUTF8(str, strlen(str), "ignore"); +} + /* Synchronize debug flags from a given Blender scene. * Return truth when device list needs invalidation. */ @@ -429,9 +435,9 @@ static PyObject *available_devices_func(PyObject * /*self*/, PyObject *args) DeviceInfo &device = devices[i]; string type_name = Device::string_from_type(device.type); PyObject *device_tuple = PyTuple_New(3); - PyTuple_SET_ITEM(device_tuple, 0, PyUnicode_FromString(device.description.c_str())); - PyTuple_SET_ITEM(device_tuple, 1, PyUnicode_FromString(type_name.c_str())); - PyTuple_SET_ITEM(device_tuple, 2, PyUnicode_FromString(device.id.c_str())); + PyTuple_SET_ITEM(device_tuple, 0, pyunicode_from_string(device.description.c_str())); + PyTuple_SET_ITEM(device_tuple, 1, pyunicode_from_string(type_name.c_str())); + PyTuple_SET_ITEM(device_tuple, 2, pyunicode_from_string(device.id.c_str())); PyTuple_SET_ITEM(ret, i, device_tuple); } @@ -642,7 +648,7 @@ static PyObject *osl_compile_func(PyObject * /*self*/, PyObject *args) static PyObject *system_info_func(PyObject * /*self*/, PyObject * /*value*/) { string system_info = Device::device_capabilities(); - return PyUnicode_FromString(system_info.c_str()); + return pyunicode_from_string(system_info.c_str()); } #ifdef WITH_OPENCL |