]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.12] gh-117968: Make the test for closed file more safe in the C API tests (GH...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Thu, 25 Apr 2024 05:16:43 +0000 (07:16 +0200)
committerGitHub <noreply@github.com>
Thu, 25 Apr 2024 05:16:43 +0000 (05:16 +0000)
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.
(cherry picked from commit 546cbcfa0eeeb533950bd49e30423f3d3bbd5ebe)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Modules/_testcapi/run.c

index baf728c2b632ad431d4531c8b40a70453c5b2dab..16c7b756c38ba3bb05fc7af03b558030d1d90e17 100644 (file)
@@ -75,8 +75,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);