fclose.c.patch   [plain text]


--- fclose.c.bsdnew	2009-11-11 13:33:03.000000000 -0800
+++ fclose.c	2009-11-11 13:33:03.000000000 -0800
@@ -49,6 +49,13 @@ fclose(FILE *fp)
 {
 	int r;
 
+	if (!__sdidinit)
+		__sinit();
+
+	if (fp == NULL) {
+		errno = EFAULT;
+		return (EOF);
+	}
 	if (fp->_flags == 0) {	/* not open! */
 		errno = EBADF;
 		return (EOF);
@@ -65,7 +72,7 @@ fclose(FILE *fp)
 		FREELB(fp);
 	fp->_file = -1;
 	fp->_r = fp->_w = 0;	/* Mess up if reaccessed. */
-	fp->_flags = 0;		/* Release this FILE for reuse. */
+	__sfprelease(fp);	/* Release this FILE for reuse. */
 	FUNLOCKFILE(fp);
 	return (r);
 }