file = io.open(f.fileno(), "r", closefd=False)
self.assertEqual(file.buffer.raw.closefd, False)
+ def test_unbounded_file(self):
+ # Issue #1174606: reading from an unbounded stream such as /dev/zero.
+ zero = "/dev/zero"
+ if not os.path.exists(zero):
+ return # /dev/zero does not exist
+ if sys.maxsize > 0x7FFFFFFF:
+ return # test can only run in a 32-bit address space
+ if support.real_max_memuse < support._2G:
+ return # test requires at least 2GB of memory
+ with open(zero, "rb", buffering=0) as f:
+ self.assertRaises(OverflowError, f.read)
+ with open(zero, "rb") as f:
+ self.assertRaises(OverflowError, f.read)
+ with open(zero, "r") as f:
+ self.assertRaises(OverflowError, f.read)
+
class MemorySeekTestMixin:
PyErr_SetString(PyExc_OverflowError,
"unbounded read returned more bytes "
"than a Python string can hold ");
+ Py_DECREF(result);
return NULL;
}
Py_END_ALLOW_THREADS
if (n < 0) {
+ Py_DECREF(bytes);
if (errno == EAGAIN)
Py_RETURN_NONE;
PyErr_SetFromErrno(PyExc_IOError);