summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward E <develinthedetail@gmail.com>2023-03-30 16:52:12 -0500
committerEdward E <develinthedetail@gmail.com>2023-03-31 02:01:28 -0500
commit40426744f9dedab3e03997bb916abdeaa69667b0 (patch)
treecc68de08251a8b11f41ee221f73f8d284a729589
parentb50568d9e758b489c2a3c409ef4e57b67820f090 (diff)
downloadnumpy-40426744f9dedab3e03997bb916abdeaa69667b0.tar.gz
BUG: Use 2GiB chunking code for fwrite() on mingw32/64
Addresses #2256
-rw-r--r--numpy/core/include/numpy/npy_common.h2
-rw-r--r--numpy/core/src/multiarray/convert.c10
2 files changed, 8 insertions, 4 deletions
diff --git a/numpy/core/include/numpy/npy_common.h b/numpy/core/include/numpy/npy_common.h
index 3b31bcf2d..22d29686c 100644
--- a/numpy/core/include/numpy/npy_common.h
+++ b/numpy/core/include/numpy/npy_common.h
@@ -129,7 +129,7 @@
#define NPY_STEALS_REF_TO_ARG(n)
#endif
-/* 64 bit file position support, also on win-amd64. Ticket #1660 */
+/* 64 bit file position support, also on win-amd64. Issue gh-2256 */
#if defined(_MSC_VER) && defined(_WIN64) && (_MSC_VER > 1400) || \
defined(__MINGW32__) || defined(__MINGW64__)
#include <io.h>
diff --git a/numpy/core/src/multiarray/convert.c b/numpy/core/src/multiarray/convert.c
index 9e0c9fb60..565cce773 100644
--- a/numpy/core/src/multiarray/convert.c
+++ b/numpy/core/src/multiarray/convert.c
@@ -157,11 +157,15 @@ PyArray_ToFile(PyArrayObject *self, FILE *fp, char *sep, char *format)
size = PyArray_SIZE(self);
NPY_BEGIN_ALLOW_THREADS;
-#if defined (_MSC_VER) && defined(_WIN64)
- /* Workaround Win64 fwrite() bug. Issue gh-2556
+#if defined(_MSC_VER) && defined(_WIN64) || \
+ defined(__MINGW32__) || defined(__MINGW64__)
+ /* Workaround Win64 fwrite() bug. Issue gh-2256
* If you touch this code, please run this test which is so slow
- * it was removed from the test suite
+ * it was removed from the test suite. Note that the original
+ * failure mode involves an infinite loop during tofile()
*
+ * import tempfile, numpy as np
+ * from numpy.testing import (assert_)
* fourgbplus = 2**32 + 2**16
* testbytes = np.arange(8, dtype=np.int8)
* n = len(testbytes)