diff options
-rw-r--r-- | source/blender/python/BPY_extern_python.h | 5 | ||||
-rw-r--r-- | source/blender/python/generic/py_capi_utils.c | 14 | ||||
-rw-r--r-- | source/blender/python/generic/py_capi_utils.h | 1 | ||||
-rw-r--r-- | source/blender/python/intern/bpy_interface.c | 14 |
4 files changed, 16 insertions, 18 deletions
diff --git a/source/blender/python/BPY_extern_python.h b/source/blender/python/BPY_extern_python.h index d6033f86d37..348f6986863 100644 --- a/source/blender/python/BPY_extern_python.h +++ b/source/blender/python/BPY_extern_python.h @@ -28,12 +28,15 @@ struct bContext; extern "C" { #endif +/* For 'FILE'. */ +#include <stdio.h> + /* bpy_interface.c */ void BPY_python_start(int argc, const char **argv); void BPY_python_end(void); void BPY_python_reset(struct bContext *C); void BPY_python_use_system_env(void); -void BPY_python_backtrace(/* FILE */ void *file); +void BPY_python_backtrace(FILE *file); #ifdef __cplusplus } /* extern "C" */ diff --git a/source/blender/python/generic/py_capi_utils.c b/source/blender/python/generic/py_capi_utils.c index caae5c4e122..838a1239210 100644 --- a/source/blender/python/generic/py_capi_utils.c +++ b/source/blender/python/generic/py_capi_utils.c @@ -382,20 +382,6 @@ void PyC_StackSpit(void) PyGILState_Release(gilstate); } -void PyC_StackPrint(/* FILE */ void *fp) -{ - PyThreadState *tstate = PyGILState_GetThisThreadState(); - if (tstate != NULL && tstate->frame != NULL) { - PyFrameObject *frame = tstate->frame; - do { - const int line = PyCode_Addr2Line(frame->f_code, frame->f_lasti); - const char *filename = _PyUnicode_AsString(frame->f_code->co_filename); - const char *funcname = _PyUnicode_AsString(frame->f_code->co_name); - fprintf(fp, " File \"%s\", line %d in %s\n", filename, line, funcname); - } while ((frame = frame->f_back)); - } -} - /** \} */ /* -------------------------------------------------------------------- */ diff --git a/source/blender/python/generic/py_capi_utils.h b/source/blender/python/generic/py_capi_utils.h index dde450012d0..e8b2e8ff502 100644 --- a/source/blender/python/generic/py_capi_utils.h +++ b/source/blender/python/generic/py_capi_utils.h @@ -28,7 +28,6 @@ void PyC_ObSpit(const char *name, PyObject *var); void PyC_ObSpitStr(char *result, size_t result_len, PyObject *var); void PyC_LineSpit(void); void PyC_StackSpit(void); -void PyC_StackPrint(/* FILE */ void *fp); PyObject *PyC_ExceptionBuffer(void); PyObject *PyC_ExceptionBuffer_Simple(void); PyObject *PyC_Object_GetAttrStringArgs(PyObject *o, Py_ssize_t n, ...); diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c index 098f6202d9b..81e1905bed7 100644 --- a/source/blender/python/intern/bpy_interface.c +++ b/source/blender/python/intern/bpy_interface.c @@ -25,6 +25,7 @@ */ #include <Python.h> +#include <frameobject.h> #include "MEM_guardedalloc.h" @@ -439,10 +440,19 @@ static void python_script_error_jump_text(struct Text *text) } } -void BPY_python_backtrace(/* FILE */ void *fp) +void BPY_python_backtrace(FILE *fp) { fputs("\n# Python backtrace\n", fp); - PyC_StackPrint(fp); + PyThreadState *tstate = PyGILState_GetThisThreadState(); + if (tstate != NULL && tstate->frame != NULL) { + PyFrameObject *frame = tstate->frame; + do { + const int line = PyCode_Addr2Line(frame->f_code, frame->f_lasti); + const char *filename = _PyUnicode_AsString(frame->f_code->co_filename); + const char *funcname = _PyUnicode_AsString(frame->f_code->co_name); + fprintf(fp, " File \"%s\", line %d in %s\n", filename, line, funcname); + } while ((frame = frame->f_back)); + } } /* super annoying, undo _PyModule_Clear(), bug [#23871] */ |