Mercurial > cpython-lru_cache-weakref
diff Python/traceback.c @ 47933:4f804ee772eb legacy-trunk
#3342: In tracebacks, printed source lines were not indented since r62555.
#3343: Py_DisplaySourceLine should be a private function. Rename it to _Py_DisplaySourceLine.
| author | Amaury Forgeot d'Arc <amauryfa@gmail.com> |
|---|---|
| date | Fri, 11 Jul 2008 21:45:06 +0000 |
| parents | 52294af4b663 |
| children | fb80b281e05a |
line wrap: on
line diff
--- a/Python/traceback.c Fri Jul 11 21:28:25 2008 +0000 +++ b/Python/traceback.c Fri Jul 11 21:45:06 2008 +0000 @@ -123,7 +123,7 @@ } int -Py_DisplaySourceLine(PyObject *f, const char *filename, int lineno) +_Py_DisplaySourceLine(PyObject *f, const char *filename, int lineno, int indent) { int err = 0; FILE *xfp = NULL; @@ -197,12 +197,27 @@ } while (*pLastChar != '\0' && *pLastChar != '\n'); } if (i == lineno) { + char buf[11]; char *p = linebuf; while (*p == ' ' || *p == '\t' || *p == '\014') p++; - err = PyFile_WriteString(p, f); - if (err == 0 && strchr(p, '\n') == NULL) - err = PyFile_WriteString("\n", f); + + /* Write some spaces before the line */ + strcpy(buf, " "); + assert (strlen(buf) == 10); + while (indent > 0) { + if(indent < 10) + buf[indent] = '\0'; + err = PyFile_WriteString(buf, f); + if (err != 0) + break; + indent -= 10; + } + + if (err == 0) + err = PyFile_WriteString(p, f); + if (err == 0 && strchr(p, '\n') == NULL) + err = PyFile_WriteString("\n", f); } fclose(xfp); return err; @@ -222,7 +237,7 @@ err = PyFile_WriteString(linebuf, f); if (err != 0) return err; - return Py_DisplaySourceLine(f, filename, lineno); + return _Py_DisplaySourceLine(f, filename, lineno, 4); } static int
