Skip to content
Snippets Groups Projects
Commit 1c806f6b authored by Campbell Barton's avatar Campbell Barton
Browse files

workaround for an error with BKE_reportf (actually BLI_dynstr_vappendf)

fixes a crash that happens when formatting a python exception into a report. - for now use pythons string formatting function.

happens when running the simple operator template so not sure if its worth re-tagging :S
parent e2a5862e
No related branches found
No related tags found
No related merge requests found
...@@ -416,6 +416,7 @@ int BPy_reports_to_error(ReportList *reports) ...@@ -416,6 +416,7 @@ int BPy_reports_to_error(ReportList *reports)
int BPy_errors_to_report(ReportList *reports) int BPy_errors_to_report(ReportList *reports)
{ {
PyObject *pystring; PyObject *pystring;
PyObject *pystring_format= NULL; // workaround, see below
char *cstring; char *cstring;
char *filename; char *filename;
...@@ -439,14 +440,23 @@ int BPy_errors_to_report(ReportList *reports) ...@@ -439,14 +440,23 @@ int BPy_errors_to_report(ReportList *reports)
} }
BPY_getFileAndNum(&filename, &lineno); BPY_getFileAndNum(&filename, &lineno);
if(filename==NULL)
filename= "<unknown location>";
cstring= _PyUnicode_AsString(pystring); cstring= _PyUnicode_AsString(pystring);
#if 0 // ARG!. workaround for a bug in blenders use of vsnprintf
BKE_reportf(reports, RPT_ERROR, "%s\nlocation:%s:%d\n", cstring, filename, lineno); BKE_reportf(reports, RPT_ERROR, "%s\nlocation:%s:%d\n", cstring, filename, lineno);
#else
pystring_format= PyUnicode_FromFormat("%s\nlocation:%s:%d\n", cstring, filename, lineno);
cstring= _PyUnicode_AsString(pystring_format);
BKE_report(reports, RPT_ERROR, cstring);
#endif
fprintf(stderr, "%s\nlocation:%s:%d\n", cstring, filename, lineno); // not exactly needed. just for testing fprintf(stderr, "%s\nlocation:%s:%d\n", cstring, filename, lineno); // not exactly needed. just for testing
Py_DECREF(pystring); Py_DECREF(pystring);
Py_DECREF(pystring_format); // workaround
return 1; return 1;
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment