Only release buffer after file has been closed. Fixes #800824.
Will backport to 2.2.
diff --git a/Objects/fileobject.c b/Objects/fileobject.c
index cdcacc4..d7c9da5 100644
--- a/Objects/fileobject.c
+++ b/Objects/fileobject.c
@@ -388,7 +388,6 @@
 file_close(PyFileObject *f)
 {
 	int sts = 0;
-	PyMem_Free(f->f_setbuf);
 	if (f->f_fp != NULL) {
 		if (f->f_close != NULL) {
 			Py_BEGIN_ALLOW_THREADS
@@ -398,6 +397,7 @@
 		}
 		f->f_fp = NULL;
 	}
+	PyMem_Free(f->f_setbuf);
 	if (sts == EOF)
 		return PyErr_SetFromErrno(PyExc_IOError);
 	if (sts != 0)