gh-117968: Make the test for closed file more safe in the C API tests (GH-118230)

The behavior of fileno() after fclose() is undefined, but it is the only
practical way to check whether the file was closed.
Only test this on the known platforms (Linux, Windows, macOS), where we
already tested that it works.
This commit is contained in:
Serhiy Storchaka 2024-04-25 08:00:42 +03:00 committed by GitHub
parent 4b10e209c7
commit 546cbcfa0e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 4 additions and 2 deletions

View File

@ -74,8 +74,10 @@ run_fileexflags(PyObject *mod, PyObject *pos_args)
result = PyRun_FileExFlags(fp, filename, start, globals, locals, closeit, pflags);
#if !defined(__wasi__)
/* The behavior of fileno() after fclose() is undefined. */
#if defined(__linux__) || defined(MS_WINDOWS) || defined(__APPLE__)
/* The behavior of fileno() after fclose() is undefined, but it is
* the only practical way to check whether the file was closed.
* Only test this on the known platforms. */
if (closeit && result && fileno(fp) >= 0) {
PyErr_SetString(PyExc_AssertionError, "File was not closed after excution");
Py_DECREF(result);