diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-05-04 08:30:14 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-05-04 08:30:14 +0300 |
commit | b3545ae37352ec440ee8fece0cd9c66289ebe52f (patch) | |
tree | a12039bd4f48b9adafe144a730e14b7405e0ed7f /source/blender/python | |
parent | 892dd3d069508319a8eff8a1401977e27d01f648 (diff) | |
parent | f3c5b0394f095bb017c19c5a945c8e7714205bf2 (diff) |
Merge branch 'master' into blender2.8
Diffstat (limited to 'source/blender/python')
-rw-r--r-- | source/blender/python/generic/idprop_py_api.c | 58 |
1 files changed, 34 insertions, 24 deletions
diff --git a/source/blender/python/generic/idprop_py_api.c b/source/blender/python/generic/idprop_py_api.c index 1153e0176df..164fe656129 100644 --- a/source/blender/python/generic/idprop_py_api.c +++ b/source/blender/python/generic/idprop_py_api.c @@ -30,6 +30,7 @@ #include "MEM_guardedalloc.h" #include "BLI_utildefines.h" +#include "BLI_string.h" #include "idprop_py_api.h" @@ -1804,39 +1805,48 @@ PyObject *BPyInit_idprop(void) return mod; } - -#ifndef NDEBUG /* -------------------------------------------------------------------- */ /* debug only function */ -void IDP_spit(IDProperty *prop) +char *IDP_reprN(const IDProperty *prop) { - if (prop) { - PyGILState_STATE gilstate; - bool use_gil = true; /* !PyC_IsInterpreterActive(); */ - PyObject *ret_dict; - PyObject *ret_str; + if (prop == NULL) { + return BLI_strdup("None"); + } - if (use_gil) { - gilstate = PyGILState_Ensure(); - } + PyGILState_STATE gilstate; + bool use_gil = true; /* !PyC_IsInterpreterActive(); */ + PyObject *ret_dict; + PyObject *ret_str; - /* to_dict() */ - ret_dict = BPy_IDGroup_MapDataToPy(prop); - ret_str = PyObject_Repr(ret_dict); - Py_DECREF(ret_dict); + if (use_gil) { + gilstate = PyGILState_Ensure(); + } - printf("IDProperty(%p): %s\n", prop, _PyUnicode_AsString(ret_str)); + /* Note: non-const cast is safe here since we only repr the result. */ + /* to_dict() */ + ret_dict = BPy_IDGroup_MapDataToPy((IDProperty *)prop); + ret_str = PyObject_Repr(ret_dict); + Py_DECREF(ret_dict); - Py_DECREF(ret_str); + Py_ssize_t res_str_len = 0; + char *res_str_bytes = _PyUnicode_AsStringAndSize(ret_str, &res_str_len); - if (use_gil) { - PyGILState_Release(gilstate); - } - } - else { - printf("IDProperty: <NIL>\n"); + res_str_bytes = BLI_strdupn(res_str_bytes, res_str_len); + + Py_DECREF(ret_str); + + if (use_gil) { + PyGILState_Release(gilstate); } + return res_str_bytes; +} + + +void IDP_print(const IDProperty *prop) +{ + char *repr = IDP_reprN(prop); + printf("IDProperty(%p): %s\n", prop, repr); + MEM_freeN(repr); } -#endif |