In the fdopen(fd, 'a') case on UNIX, don't try to set fd's flags to -1 if
fcntl() and fdopen() both fail. Will backport.
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index a27a2af..50ee0e3 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -5777,7 +5777,7 @@
 		if (flags != -1)
 			fcntl(fd, F_SETFL, flags | O_APPEND);
 		fp = fdopen(fd, mode);
-		if (fp == NULL)
+		if (fp == NULL && flags != -1)
 			/* restore old mode if fdopen failed */
 			fcntl(fd, F_SETFL, flags);
 	} else {