From: Victor Stinner Date: Fri, 1 Apr 2011 13:34:01 +0000 (+0200) Subject: Issue #11393: _Py_DumpTraceback() writes the header even if there is no frame X-Git-Tag: v3.3.0a1~2698 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fcb88c45030c5480ca184a2911bd3f9357b323d5;p=thirdparty%2FPython%2Fcpython.git Issue #11393: _Py_DumpTraceback() writes the header even if there is no frame --- diff --git a/Include/traceback.h b/Include/traceback.h index 9a8f2a63adbf..77347077e91a 100644 --- a/Include/traceback.h +++ b/Include/traceback.h @@ -38,8 +38,6 @@ PyAPI_DATA(PyTypeObject) PyTraceBack_Type; ... File "xxx", line xxx in - Return 0 on success, -1 on error. - This function is written for debug purpose only, to dump the traceback in the worst case: after a segmentation fault, at fatal error, etc. That's why, it is very limited. Strings are truncated to 100 characters and encoded to @@ -49,7 +47,7 @@ PyAPI_DATA(PyTypeObject) PyTraceBack_Type; This function is signal safe. */ -PyAPI_DATA(int) _Py_DumpTraceback( +PyAPI_DATA(void) _Py_DumpTraceback( int fd, PyThreadState *tstate); diff --git a/Python/traceback.c b/Python/traceback.c index 37673d93e04c..f0142da7929c 100644 --- a/Python/traceback.c +++ b/Python/traceback.c @@ -556,18 +556,19 @@ dump_frame(int fd, PyFrameObject *frame) write(fd, "\n", 1); } -static int +static void dump_traceback(int fd, PyThreadState *tstate, int write_header) { PyFrameObject *frame; unsigned int depth; + if (write_header) + PUTS(fd, "Traceback (most recent call first):\n"); + frame = _PyThreadState_GetFrame(tstate); if (frame == NULL) - return -1; + return; - if (write_header) - PUTS(fd, "Traceback (most recent call first):\n"); depth = 0; while (frame != NULL) { if (MAX_FRAME_DEPTH <= depth) { @@ -580,13 +581,12 @@ dump_traceback(int fd, PyThreadState *tstate, int write_header) frame = frame->f_back; depth++; } - return 0; } -int +void _Py_DumpTraceback(int fd, PyThreadState *tstate) { - return dump_traceback(fd, tstate, 1); + dump_traceback(fd, tstate, 1); } /* Write the thread identifier into the file 'fd': "Current thread 0xHHHH:\" if