Issue 1267, continued.
Additional patch by Christian Heimes to deal more cleanly with the
FILE* vs file-descriptor issues.
I cleaned up his code a bit, and moved the lseek() call into import.c.
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 647ea3e..e0de961 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -5386,11 +5386,18 @@
posix_tmpfile(PyObject *self, PyObject *noargs)
{
FILE *fp;
+ int fd;
fp = tmpfile();
if (fp == NULL)
return posix_error();
- return PyFile_FromFile(fp, "<tmpfile>", "w+b", fclose);
+ fd = fileno(fp);
+ if (fd != -1)
+ fd = dup(fd);
+ fclose(fp);
+ if (fd == -1)
+ return posix_error();
+ return PyFile_FromFd(fd, "<tmpfile>", "w+b", -1, NULL, NULL);
}
#endif