summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2015-05-31 08:56:48 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2015-05-31 08:56:48 (GMT)
commitdc967c137cb5e2e0f558cedbb94a13256db3fb75 (patch)
tree99414d26fe79904cfa78733ab216eb74da5e09bb
parent062bed289bd2806815203add22d134762bcfbcc3 (diff)
downloadcpython-dc967c137cb5e2e0f558cedbb94a13256db3fb75.zip
cpython-dc967c137cb5e2e0f558cedbb94a13256db3fb75.tar.gz
cpython-dc967c137cb5e2e0f558cedbb94a13256db3fb75.tar.bz2
Fixed the array module in unicode disabled build (regression of issue20014).
-rw-r--r--Lib/test/test_array.py5
-rw-r--r--Modules/arraymodule.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/Lib/test/test_array.py b/Lib/test/test_array.py
index 7256b94..105cf73 100644
--- a/Lib/test/test_array.py
+++ b/Lib/test/test_array.py
@@ -18,7 +18,9 @@ class ArraySubclassWithKwargs(array.array):
array.array.__init__(self, typecode)
tests = [] # list to accumulate all tests
-typecodes = "cubBhHiIlLfd"
+typecodes = "cbBhHiIlLfd"
+if test_support.have_unicode:
+ typecodes += "u"
class BadConstructorTest(unittest.TestCase):
@@ -837,6 +839,7 @@ class CharacterTest(StringTest):
self.assertEqual(s.color, "red")
self.assertEqual(s.__dict__.keys(), ["color"])
+ @test_support.requires_unicode
def test_nounicode(self):
a = array.array(self.typecode, self.example)
self.assertRaises(ValueError, a.fromunicode, unicode(''))
diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c
index c37644d..3ed8a33 100644
--- a/Modules/arraymodule.c
+++ b/Modules/arraymodule.c
@@ -1940,8 +1940,10 @@ array_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
if (PyString_Check(typecode) && PyString_GET_SIZE(typecode) == 1)
c = (unsigned char)*PyString_AS_STRING(typecode);
+#ifdef Py_USING_UNICODE
else if (PyUnicode_Check(typecode) && PyUnicode_GET_SIZE(typecode) == 1)
c = *PyUnicode_AS_UNICODE(typecode);
+#endif
else {
PyErr_Format(PyExc_TypeError,
"array() argument 1 or typecode must be char (string or "