diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2016-03-15 20:57:02 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2016-03-15 20:57:02 (GMT) |
commit | 9528334e16abf1673edcfadf7007f55a864079b7 (patch) | |
tree | e4f52b0fa224bb97a1e15320d73381381d81bea8 /Modules | |
parent | 57003f81ead9ff38150c1e4821811c66c296d33c (diff) | |
download | cpython-9528334e16abf1673edcfadf7007f55a864079b7.zip cpython-9528334e16abf1673edcfadf7007f55a864079b7.tar.gz cpython-9528334e16abf1673edcfadf7007f55a864079b7.tar.bz2 |
_tracemalloc: store lineno as unsigned int
Issue #26564. Cleanup the code, lineno is never negative.
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/_tracemalloc.c | 24 |
1 files changed, 7 insertions, 17 deletions
diff --git a/Modules/_tracemalloc.c b/Modules/_tracemalloc.c index 226a473..fd520f3 100644 --- a/Modules/_tracemalloc.c +++ b/Modules/_tracemalloc.c @@ -66,7 +66,7 @@ _declspec(align(4)) #endif { PyObject *filename; - int lineno; + unsigned int lineno; } frame_t; typedef struct { @@ -266,12 +266,13 @@ tracemalloc_get_frame(PyFrameObject *pyframe, frame_t *frame) PyCodeObject *code; PyObject *filename; _Py_hashtable_entry_t *entry; + int lineno; frame->filename = unknown_filename; - frame->lineno = PyFrame_GetLineNumber(pyframe); - assert(frame->lineno >= 0); - if (frame->lineno < 0) - frame->lineno = 0; + lineno = PyFrame_GetLineNumber(pyframe); + if (lineno < 0) + lineno = 0; + frame->lineno = (unsigned int)lineno; code = pyframe->f_code; if (code == NULL) { @@ -375,7 +376,6 @@ traceback_get_frames(traceback_t *traceback) for (pyframe = tstate->frame; pyframe != NULL; pyframe = pyframe->f_back) { tracemalloc_get_frame(pyframe, &traceback->frames[traceback->nframe]); assert(traceback->frames[traceback->nframe].filename != NULL); - assert(traceback->frames[traceback->nframe].lineno >= 0); traceback->nframe++; if (traceback->nframe == tracemalloc_config.max_nframe) break; @@ -943,15 +943,6 @@ tracemalloc_stop(void) tracemalloc_traceback = NULL; } -static PyObject* -lineno_as_obj(int lineno) -{ - if (lineno >= 0) - return PyLong_FromLong(lineno); - else - Py_RETURN_NONE; -} - PyDoc_STRVAR(tracemalloc_is_tracing_doc, "is_tracing()->bool\n" "\n" @@ -996,8 +987,7 @@ frame_to_pyobject(frame_t *frame) Py_INCREF(frame->filename); PyTuple_SET_ITEM(frame_obj, 0, frame->filename); - assert(frame->lineno >= 0); - lineno_obj = lineno_as_obj(frame->lineno); + lineno_obj = PyLong_FromUnsignedLong(frame->lineno); if (lineno_obj == NULL) { Py_DECREF(frame_obj); return NULL; |