summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Peters <tim.peters@gmail.com>2000-09-29 04:03:10 (GMT)
committerTim Peters <tim.peters@gmail.com>2000-09-29 04:03:10 (GMT)
commit42c83afd14e1c7270124e581e42163ff5ef98ed8 (patch)
treeddd43b50a4149865a49aade1565d2535bcb9c805
parent3cc7e4d083916a5171caae453c38d423baae1d91 (diff)
downloadcpython-42c83afd14e1c7270124e581e42163ff5ef98ed8.zip
cpython-42c83afd14e1c7270124e581e42163ff5ef98ed8.tar.gz
cpython-42c83afd14e1c7270124e581e42163ff5ef98ed8.tar.bz2
The 2.0b2 change to write .pyc files in exclusive mode (if possible)
unintentionally caused them to get written in text mode under Windows. As a result, when .pyc files were later read-- in binary mode --the magic number was always wrong (note that .pyc magic numbers deliberately include \r and \n characters, so this was "good" breakage, 100% across all .pyc files, not random corruption in a subset). Fixed that.
-rw-r--r--Python/import.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/Python/import.c b/Python/import.c
index 533f85e..9ecd38d 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -646,7 +646,12 @@ open_exclusive(char *filename)
*/
int fd;
(void) unlink(filename);
- fd = open(filename, O_EXCL|O_CREAT|O_WRONLY|O_TRUNC, 0666);
+ fd = open(filename, O_EXCL|O_CREAT|O_WRONLY|O_TRUNC
+#ifdef O_BINARY
+ |O_BINARY /* necessary for Windows */
+#endif
+
+ , 0666);
if (fd < 0)
return NULL;
return fdopen(fd, "wb");