fix refleak in file handle creation error case
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index df3c326..72bf7d2 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -6906,13 +6906,6 @@
}
}
#endif
- /* The dummy filename used here must be kept in sync with the value
- tested against in gzip.GzipFile.__init__() - see issue #13781. */
- f = PyFile_FromFile(NULL, "<fdopen>", orgmode, fclose);
- if (f == NULL) {
- PyMem_FREE(mode);
- return NULL;
- }
Py_BEGIN_ALLOW_THREADS
#if !defined(MS_WINDOWS) && defined(HAVE_FCNTL_H)
if (mode[0] == 'a') {
@@ -6935,6 +6928,11 @@
PyMem_FREE(mode);
if (fp == NULL)
return posix_error();
+ /* The dummy filename used here must be kept in sync with the value
+ tested against in gzip.GzipFile.__init__() - see issue #13781. */
+ f = PyFile_FromFile(NULL, "<fdopen>", orgmode, fclose);
+ if (f == NULL)
+ return NULL;
/* We now know we will succeed, so initialize the file object. */
((PyFileObject *)f)->f_fp = fp;
PyFile_SetBufSize(f, bufsize);