While I was modifying test_trace, it threw an exception when I accidentally

made it try to set the line number from the trace callback for a 'call' event.
This patch makes the error message a little more helpful in that case, and
makes it a little less likely that a future editor will make the same mistake
in test_trace.
This commit is contained in:
Jeffrey Yasskin 2009-05-18 21:14:54 +00:00
parent fceb5d478f
commit 61328eef1f
2 changed files with 3 additions and 2 deletions

View File

@ -471,7 +471,7 @@ class JumpTracer:
def trace(self, frame, event, arg): def trace(self, frame, event, arg):
if not self.done and frame.f_code == self.function.func_code: if not self.done and frame.f_code == self.function.func_code:
firstLine = frame.f_code.co_firstlineno firstLine = frame.f_code.co_firstlineno
if frame.f_lineno == firstLine + self.jumpFrom: if event == 'line' and frame.f_lineno == firstLine + self.jumpFrom:
# Cope with non-integer self.jumpTo (because of # Cope with non-integer self.jumpTo (because of
# no_jump_to_non_integers below). # no_jump_to_non_integers below).
try: try:

View File

@ -127,7 +127,8 @@ frame_setlineno(PyFrameObject *f, PyObject* p_new_lineno)
if (!f->f_trace) if (!f->f_trace)
{ {
PyErr_Format(PyExc_ValueError, PyErr_Format(PyExc_ValueError,
"f_lineno can only be set by a trace function"); "f_lineno can only be set by a"
" line trace function");
return -1; return -1;
} }