From f9e9a6f403af61c6aead4cfe766fb1efbb058171 Mon Sep 17 00:00:00 2001 From: Mark Dickinson Date: Fri, 25 Mar 2011 22:01:06 +0000 Subject: [PATCH] Issue #11673: Fix multiprocessing.[Raw]Array constructor to accept a size of type long. Thanks Robert Kern. --- Lib/multiprocessing/sharedctypes.py | 2 +- Lib/test/test_multiprocessing.py | 7 +++++++ Misc/NEWS | 3 +++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Lib/multiprocessing/sharedctypes.py b/Lib/multiprocessing/sharedctypes.py index b569fb2f8b..2430be7510 100644 --- a/Lib/multiprocessing/sharedctypes.py +++ b/Lib/multiprocessing/sharedctypes.py @@ -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: diff --git a/Lib/test/test_multiprocessing.py b/Lib/test/test_multiprocessing.py index c30246085b..bdfc171253 100644 --- a/Lib/test/test_multiprocessing.py +++ b/Lib/test/test_multiprocessing.py @@ -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)) diff --git a/Misc/NEWS b/Misc/NEWS index 207d3bc4d8..4344e37b02 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -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. -- 2.50.1