Fix FileStorage on Windows: open fd with O_BINARY, UTF-8 release logs
release / build-wheels (linux, bash) (push) Successful in 1m13s
release / build-wheels (windows, cmd) (push) Successful in 1m20s
release / build-wheels (macos, bash) (push) Successful in 1m26s
release / publish-pypi (push) Failing after 2s

os.open() on Windows defaults to O_TEXT, so the CRT translated \r\n in
binary ciphertext: writes grew, offsets shifted, reads came up short and
the RAF callbacks failed with EIO (probe/read/write depending on where
a 0x0A byte landed). Pass O_BINARY where it exists.

Also reconfigure stdout/stderr to UTF-8 in tools/release.py so the
✓/✗/⚠ summary lines don't crash on cp1252 Windows consoles.
This commit is contained in:
LeoVasanko committed 2026-10-04 17:48:34 +00:00
1 parent 59dd4d922f
commit 503ce8e491
2 files changed
+8

No files matched your search

+3
View File
@@ -104,6 +104,9 @@ class FileStorage:
flags = os.O_RDWR | os.O_CREAT | os.O_EXCL
else:
raise ValueError(f"Unsupported mode: {mode}")
# O_BINARY (Windows only): keep the CRT from translating \r\n in
# binary data, which corrupts ciphertext and shifts offsets
flags |= getattr(os, "O_BINARY", 0)
self._fd = os.open(path, flags, 0o644)
self._closed = False
self._lock = threading.Lock()