Issue #11673: Fix multiprocessing.[Raw]Array constructor to accept a size of type long. Thanks Robert Kern.
diff --git a/Lib/multiprocessing/sharedctypes.py b/Lib/multiprocessing/sharedctypes.py
index b569fb2..2430be7 100644
--- a/Lib/multiprocessing/sharedctypes.py
+++ b/Lib/multiprocessing/sharedctypes.py
@@ -78,7 +78,7 @@
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:
diff --git a/Lib/test/test_multiprocessing.py b/Lib/test/test_multiprocessing.py
index c302460..bdfc171 100644
--- a/Lib/test/test_multiprocessing.py
+++ b/Lib/test/test_multiprocessing.py
@@ -918,6 +918,13 @@
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))
lock1 = arr1.get_lock()
diff --git a/Misc/NEWS b/Misc/NEWS
index 207d3bc..4344e37 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -43,6 +43,9 @@
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.