mirror of
https://github.com/python/cpython.git
synced 2025-09-27 18:59:43 +00:00
Merge #11675
This commit is contained in:
commit
633872e3fb
3 changed files with 22 additions and 1 deletions
|
@ -80,7 +80,9 @@ def RawArray(typecode_or_type, size_or_initializer):
|
||||||
type_ = typecode_to_type.get(typecode_or_type, typecode_or_type)
|
type_ = typecode_to_type.get(typecode_or_type, typecode_or_type)
|
||||||
if isinstance(size_or_initializer, int):
|
if isinstance(size_or_initializer, int):
|
||||||
type_ = type_ * size_or_initializer
|
type_ = type_ * size_or_initializer
|
||||||
return _new_value(type_)
|
obj = _new_value(type_)
|
||||||
|
ctypes.memset(ctypes.addressof(obj), 0, ctypes.sizeof(obj))
|
||||||
|
return obj
|
||||||
else:
|
else:
|
||||||
type_ = type_ * len(size_or_initializer)
|
type_ = type_ * len(size_or_initializer)
|
||||||
result = _new_value(type_)
|
result = _new_value(type_)
|
||||||
|
|
|
@ -916,6 +916,21 @@ class _TestArray(BaseTestCase):
|
||||||
|
|
||||||
self.assertEqual(list(arr[:]), seq)
|
self.assertEqual(list(arr[:]), seq)
|
||||||
|
|
||||||
|
@unittest.skipIf(c_int is None, "requires _ctypes")
|
||||||
|
def test_array_from_size(self):
|
||||||
|
size = 10
|
||||||
|
# Test for zeroing (see issue #11675).
|
||||||
|
# The repetition below strengthens the test by increasing the chances
|
||||||
|
# of previously allocated non-zero memory being used for the new array
|
||||||
|
# on the 2nd and 3rd loops.
|
||||||
|
for _ in range(3):
|
||||||
|
arr = self.Array('i', size)
|
||||||
|
self.assertEqual(len(arr), size)
|
||||||
|
self.assertEqual(list(arr), [0] * size)
|
||||||
|
arr[:] = range(10)
|
||||||
|
self.assertEqual(list(arr), list(range(10)))
|
||||||
|
del arr
|
||||||
|
|
||||||
@unittest.skipIf(c_int is None, "requires _ctypes")
|
@unittest.skipIf(c_int is None, "requires _ctypes")
|
||||||
def test_rawarray(self):
|
def test_rawarray(self):
|
||||||
self.test_array(raw=True)
|
self.test_array(raw=True)
|
||||||
|
|
|
@ -10,6 +10,10 @@ What's New in Python 3.2.1?
|
||||||
Core and Builtins
|
Core and Builtins
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
- Issue #11675: multiprocessing.[Raw]Array objects created from an integer size
|
||||||
|
are now zeroed on creation. This matches the behaviour specified by the
|
||||||
|
documentation.
|
||||||
|
|
||||||
- Issue #11395: io.FileIO().write() clamps the data length to 32,767 bytes on
|
- Issue #11395: io.FileIO().write() clamps the data length to 32,767 bytes on
|
||||||
Windows if the file is a TTY to workaround a Windows bug. The Windows console
|
Windows if the file is a TTY to workaround a Windows bug. The Windows console
|
||||||
returns an error (12: not enough space error) on writing into stdout if
|
returns an error (12: not enough space error) on writing into stdout if
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue