(original) (raw)
changeset: 100549:fea3c6e9a38e branch: 3.5 parent: 100546:c298c6d8b324 user: Victor Stinner victor.stinner@gmail.com date: Tue Mar 15 21:57:02 2016 +0100 files: Modules/_tracemalloc.c description: _tracemalloc: store lineno as unsigned int Issue #26564. Cleanup the code, lineno is never negative. diff -r c298c6d8b324 -r fea3c6e9a38e Modules/_tracemalloc.c --- a/Modules/_tracemalloc.c Tue Mar 15 17:23:35 2016 +0100 +++ b/Modules/_tracemalloc.c Tue Mar 15 21:57:02 2016 +0100 @@ -66,7 +66,7 @@ #endif { PyObject *filename; - int lineno; + unsigned int lineno; } frame_t; typedef struct { @@ -266,12 +266,13 @@ 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 @@ 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_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 @@ 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; /victor.stinner@gmail.com