If a file is opened with an explicit buffer size >= 1, repeated
close() calls would attempt to free() the buffer already free()ed on
the first close().     [bug introduced with patch #788249]

Making sure that the buffer is free()ed in file object deallocation is
a belt-n-braces bit of insurance against a memory leak.
diff --git a/Objects/fileobject.c b/Objects/fileobject.c
index c973366..6b7e01b 100644
--- a/Objects/fileobject.c
+++ b/Objects/fileobject.c
@@ -312,6 +312,7 @@
 		(*f->f_close)(f->f_fp);
 		Py_END_ALLOW_THREADS
 	}
+	PyMem_Free(f->f_setbuf);
 	Py_XDECREF(f->f_name);
 	Py_XDECREF(f->f_mode);
 	Py_XDECREF(f->f_encoding);
@@ -358,6 +359,7 @@
 		f->f_fp = NULL;
 	}
 	PyMem_Free(f->f_setbuf);
+	f->f_setbuf = NULL;
 	if (sts == EOF)
 		return PyErr_SetFromErrno(PyExc_IOError);
 	if (sts != 0)