fclose.c.patch   [plain text]


--- fclose.c.orig	2009-02-15 03:11:22.000000000 -0800
+++ fclose.c	2009-02-15 19:01:59.000000000 -0800
@@ -53,6 +53,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);
@@ -69,7 +76,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);
 }