From a9a64242f6237744ab08c965bdce8e90dbfc768a Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 16 Apr 2019 19:33:57 +0100 Subject: [PATCH] Don't crash if python output happens without a stack frame * This can happen if SyntaxWarning message are printed during parsing before execution. --- qrenderdoc/Code/pyrenderdoc/PythonContext.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/qrenderdoc/Code/pyrenderdoc/PythonContext.cpp b/qrenderdoc/Code/pyrenderdoc/PythonContext.cpp index df3963467..013e27a5c 100644 --- a/qrenderdoc/Code/pyrenderdoc/PythonContext.cpp +++ b/qrenderdoc/Code/pyrenderdoc/PythonContext.cpp @@ -1119,11 +1119,18 @@ PyObject *PythonContext::outstream_write(PyObject *self, PyObject *args) while(message.back() == '\n' || message.back() == '\r') message.erase(message.size() - 1); - QString filename = ToQStr(frame->f_code->co_filename); + QString filename = lit("unknown"); + int line = 0; + + if(frame) + { + filename = ToQStr(frame->f_code->co_filename); + line = PyFrame_GetLineNumber(frame); + } if(!message.empty()) RENDERDOC_LogMessage(redirector->isStdError ? LogType::Error : LogType::Comment, "EXTN", - filename.toUtf8().data(), PyFrame_GetLineNumber(frame), message.c_str()); + filename.toUtf8().data(), line, message.c_str()); } }