Commit ebe8f8a8 authored by Guido van Rossum's avatar Guido van Rossum

Minor cleanup of the comment for PyErr_ProgramText() and a tweak to the code

to guarantee the claim that it doesn't set an exception.
parent df4ce102
......@@ -800,13 +800,11 @@ PyErr_SyntaxLocation(const char *filename, int lineno)
PyErr_Restore(exc, v, tb);
}
/* com_fetch_program_text will attempt to load the line of text that
the exception refers to. If it fails, it will return NULL but will
not set an exception.
/* Attempt to load the line of text that the exception refers to. If it
fails, it will return NULL but will not set an exception.
XXX The functionality of this function is quite similar to the
functionality in tb_displayline() in traceback.c.
*/
functionality in tb_displayline() in traceback.c. */
PyObject *
PyErr_ProgramText(const char *filename, int lineno)
......@@ -824,7 +822,8 @@ PyErr_ProgramText(const char *filename, int lineno)
char *pLastChar = &linebuf[sizeof(linebuf) - 2];
do {
*pLastChar = '\0';
if (Py_UniversalNewlineFgets(linebuf, sizeof linebuf, fp, NULL) == NULL)
if (Py_UniversalNewlineFgets(linebuf, sizeof linebuf,
fp, NULL) == NULL)
break;
/* fgets read *something*; if it didn't get as
far as pLastChar, it must have found a newline
......@@ -836,9 +835,13 @@ PyErr_ProgramText(const char *filename, int lineno)
fclose(fp);
if (i == lineno) {
char *p = linebuf;
PyObject *res;
while (*p == ' ' || *p == '\t' || *p == '\014')
p++;
return PyUnicode_FromString(p);
res = PyUnicode_FromString(p);
if (res == NULL)
PyErr_Clear();
return res;
}
return NULL;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment