static int tb_printinternal(tracebackobject *tb, PyObject *f, int limit) { int err = 0; int depth = 0; tracebackobject *tb1 = tb; while (tb1 != NULL) { depth++; tb1 = tb1->tb_next; } while (tb != NULL && err == 0) { if (depth <= limit) { err = tb_displayline(f, PyString_AsString( tb->tb_frame->f_code->co_filename), tb->tb_lineno, PyString_AsString(tb->tb_frame->f_code->co_name)); } depth--; tb = tb->tb_next; if (err == 0) err = PyErr_CheckSignals(); } return err; }
static int tb_printinternal(PyTracebackObject *tb, PyObject *f, long limit) { int err = 0; Py_ssize_t depth = 0; PyObject *last_file = NULL; int last_line = -1; PyObject *last_name = NULL; long cnt = 0; PyTracebackObject *tb1 = tb; while (tb1 != NULL) { depth++; tb1 = tb1->tb_next; } while (tb != NULL && depth > limit) { depth--; tb = tb->tb_next; } while (tb != NULL && err == 0) { if (last_file != NULL && tb->tb_frame->f_code->co_filename == last_file && last_line != -1 && tb->tb_lineno == last_line && last_name != NULL && tb->tb_frame->f_code->co_name == last_name) { cnt++; } else { if (cnt > 3) { err = tb_print_line_repeated(f, cnt); } last_file = tb->tb_frame->f_code->co_filename; last_line = tb->tb_lineno; last_name = tb->tb_frame->f_code->co_name; cnt = 0; } if (err == 0 && cnt < 3) { err = tb_displayline(f, tb->tb_frame->f_code->co_filename, tb->tb_lineno, tb->tb_frame->f_code->co_name); if (err == 0) { err = PyErr_CheckSignals(); } } tb = tb->tb_next; } if (err == 0 && cnt > 3) { err = tb_print_line_repeated(f, cnt); } return err; }
static int tb_printinternal(PyTracebackObject *tb, PyObject *f, long limit) { int err = 0; long depth = 0; PyTracebackObject *tb1 = tb; while (tb1 != NULL) { depth++; tb1 = tb1->tb_next; } while (tb != NULL && err == 0) { if (depth <= limit) { err = tb_displayline(f, tb->tb_frame->f_code->co_filename, tb->tb_lineno, tb->tb_frame->f_code->co_name); } depth--; tb = tb->tb_next; if (err == 0) err = PyErr_CheckSignals(); } return err; }