diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-12-11 10:04:44 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-12-11 10:04:44 +0300 |
commit | 576d385ddb581190d21febfa724086797c47492a (patch) | |
tree | 841744bda1ec26fdd4a9af7113b6fb746a5d53fd /source/blender/python/generic/py_capi_utils.c | |
parent | f52d60a21d4d3551190305549dbb2a647a1ae0c9 (diff) |
PyAPI: add utility functions get the size from an evaluated string
Allows including null bytes in the resulting string.
Diffstat (limited to 'source/blender/python/generic/py_capi_utils.c')
-rw-r--r-- | source/blender/python/generic/py_capi_utils.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/source/blender/python/generic/py_capi_utils.c b/source/blender/python/generic/py_capi_utils.c index 8470d1ccdf3..8ea627589f2 100644 --- a/source/blender/python/generic/py_capi_utils.c +++ b/source/blender/python/generic/py_capi_utils.c @@ -1257,10 +1257,11 @@ bool PyC_RunString_AsIntPtr(const char *imports[], return ok; } -bool PyC_RunString_AsString(const char *imports[], - const char *expr, - const char *filename, - char **r_value) +bool PyC_RunString_AsStringAndSize(const char *imports[], + const char *expr, + const char *filename, + char **r_value, + size_t *r_value_size) { PyObject *py_dict, *retval; bool ok = true; @@ -1288,6 +1289,7 @@ bool PyC_RunString_AsString(const char *imports[], char *val_alloc = MEM_mallocN(val_len + 1, __func__); memcpy(val_alloc, val, val_len + 1); *r_value = val_alloc; + *r_value_size = val_len; } Py_DECREF(retval); @@ -1298,6 +1300,15 @@ bool PyC_RunString_AsString(const char *imports[], return ok; } +bool PyC_RunString_AsString(const char *imports[], + const char *expr, + const char *filename, + char **r_value) +{ + size_t value_size; + return PyC_RunString_AsStringAndSize(imports, expr, filename, r_value, &value_size); +} + #endif /* #ifndef MATH_STANDALONE */ /* -------------------------------------------------------------------- */ |