@@ -1732,7 +1732,7 @@ array_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
1732
1732
return NULL ;
1733
1733
1734
1734
if (!(initial == NULL || PyList_Check (initial )
1735
- || PyString_Check (initial )
1735
+ || PyString_Check (initial ) || PyTuple_Check ( initial )
1736
1736
|| (c == 'u' && PyUnicode_Check (initial )))) {
1737
1737
PyErr_SetString (PyExc_TypeError ,
1738
1738
"array initializer must be list or string" );
@@ -1742,10 +1742,12 @@ array_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
1742
1742
if (descr -> typecode == c ) {
1743
1743
PyObject * a ;
1744
1744
int len ;
1745
- if (initial == NULL || !PyList_Check (initial ))
1745
+
1746
+ if (initial == NULL || !(PyList_Check (initial )
1747
+ || PyTuple_Check (initial )))
1746
1748
len = 0 ;
1747
1749
else
1748
- len = PyList_Size (initial );
1750
+ len = PySequence_Size (initial );
1749
1751
1750
1752
a = newarrayobject (type , len , descr );
1751
1753
if (a == NULL )
@@ -1755,7 +1757,7 @@ array_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
1755
1757
int i ;
1756
1758
for (i = 0 ; i < len ; i ++ ) {
1757
1759
PyObject * v =
1758
- PyList_GetItem (initial , i );
1760
+ PySequence_GetItem (initial , i );
1759
1761
if (setarrayitem (a , i , v ) != 0 ) {
1760
1762
Py_DECREF (a );
1761
1763
return NULL ;
0 commit comments