Index: Objects/fileobject.c =================================================================== --- Objects/fileobject.c (revision 84664) +++ Objects/fileobject.c (working copy) @@ -423,6 +423,7 @@ int sts = 0; int (*local_close)(FILE *); FILE *local_fp = f->f_fp; + char *local_setbuf = f->f_setbuf; if (local_fp != NULL) { local_close = f->f_close; if (local_close != NULL && f->unlocked_count > 0) { @@ -446,10 +447,12 @@ * called. */ f->f_fp = NULL; if (local_close != NULL) { + f->f_setbuf = NULL; Py_BEGIN_ALLOW_THREADS errno = 0; sts = (*local_close)(local_fp); Py_END_ALLOW_THREADS + f->f_setbuf = local_setbuf; if (sts == EOF) return PyErr_SetFromErrno(PyExc_IOError); if (sts != 0)