mirror of
https://github.com/python/cpython.git
synced 2025-12-23 09:19:18 +00:00
fix #142570: check file type before skipping the source first line
This commit is contained in:
parent
a154c9ed4e
commit
177bf5ea28
1 changed files with 8 additions and 8 deletions
|
|
@ -380,6 +380,14 @@ pymain_run_file_obj(PyObject *program_name, PyObject *filename,
|
|||
return 2;
|
||||
}
|
||||
|
||||
struct _Py_stat_struct sb;
|
||||
if (_Py_fstat_noraise(fileno(fp), &sb) == 0 && S_ISDIR(sb.st_mode)) {
|
||||
PySys_FormatStderr("%S: %R is a directory, cannot continue\n",
|
||||
program_name, filename);
|
||||
fclose(fp);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (skip_source_first_line) {
|
||||
int ch;
|
||||
/* Push back first newline so line numbers remain the same */
|
||||
|
|
@ -391,14 +399,6 @@ pymain_run_file_obj(PyObject *program_name, PyObject *filename,
|
|||
}
|
||||
}
|
||||
|
||||
struct _Py_stat_struct sb;
|
||||
if (_Py_fstat_noraise(fileno(fp), &sb) == 0 && S_ISDIR(sb.st_mode)) {
|
||||
PySys_FormatStderr("%S: %R is a directory, cannot continue\n",
|
||||
program_name, filename);
|
||||
fclose(fp);
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Call pending calls like signal handlers (SIGINT)
|
||||
if (Py_MakePendingCalls() == -1) {
|
||||
fclose(fp);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue