Issue #11673: Fix multiprocessing.[Raw]Array constructor to accept a size of type long. Thanks Robert Kern.

This commit is contained in:
Mark Dickinson 2011-03-25 22:01:06 +00:00
parent d480d93f61
commit f9e9a6f403
3 changed files with 11 additions and 1 deletions

View file

@ -78,7 +78,7 @@ def RawArray(typecode_or_type, size_or_initializer):
Returns a ctypes array allocated from shared memory
'''
type_ = typecode_to_type.get(typecode_or_type, typecode_or_type)
if isinstance(size_or_initializer, int):
if isinstance(size_or_initializer, (int, long)):
type_ = type_ * size_or_initializer
return _new_value(type_)
else:

View file

@ -917,6 +917,13 @@ class _TestArray(BaseTestCase):
def test_rawarray(self):
self.test_array(raw=True)
@unittest.skipIf(c_int is None, "requires _ctypes")
def test_array_accepts_long(self):
arr = self.Array('i', 10L)
self.assertEqual(len(arr), 10)
raw_arr = self.RawArray('i', 10L)
self.assertEqual(len(raw_arr), 10)
@unittest.skipIf(c_int is None, "requires _ctypes")
def test_getobj_getlock_obj(self):
arr1 = self.Array('i', range(10))

View file

@ -43,6 +43,9 @@ Core and Builtins
Library
-------
- Issue #11673: Fix multiprocessing Array and RawArray constructors to accept a
size of type 'long', rather than only accepting 'int'.
- Issue #10042: Fixed the total_ordering decorator to handle cross-type
comparisons that could lead to infinite recursion.