@@ -1925,10 +1925,7 @@ array_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
19251925
19261926 if (!(initial == NULL || PyList_Check (initial )
19271927 || PyString_Check (initial ) || PyTuple_Check (initial )
1928- || PyTuple_Check (initial )
1929- || ((c == 'u' ) && PyUnicode_Check (initial ))
1930- || (array_Check (initial )
1931- && c == ((arrayobject * )initial )-> ob_descr -> typecode ))) {
1928+ || (c == 'u' && PyUnicode_Check (initial )))) {
19321929 it = PyObject_GetIter (initial );
19331930 if (it == NULL )
19341931 return NULL ;
@@ -1944,20 +1941,17 @@ array_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
19441941 PyObject * a ;
19451942 Py_ssize_t len ;
19461943
1947- if (initial == NULL )
1944+ if (initial == NULL || !(PyList_Check (initial )
1945+ || PyTuple_Check (initial )))
19481946 len = 0 ;
1949- else if (PyList_Check (initial ))
1950- len = PyList_GET_SIZE (initial );
1951- else if (PyTuple_Check (initial ) || array_Check (initial ))
1952- len = Py_SIZE (initial );
19531947 else
1954- len = 0 ;
1948+ len = PySequence_Size ( initial ) ;
19551949
19561950 a = newarrayobject (type , len , descr );
19571951 if (a == NULL )
19581952 return NULL ;
19591953
1960- if (len > 0 && ! array_Check ( initial ) ) {
1954+ if (len > 0 ) {
19611955 Py_ssize_t i ;
19621956 for (i = 0 ; i < len ; i ++ ) {
19631957 PyObject * v =
@@ -2007,11 +2001,6 @@ array_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
20072001 }
20082002#endif
20092003 }
2010- else if (initial != NULL && array_Check (initial )) {
2011- arrayobject * self = (arrayobject * )a ;
2012- arrayobject * other = (arrayobject * )initial ;
2013- memcpy (self -> ob_item , other -> ob_item , len * other -> ob_descr -> itemsize );
2014- }
20152004 if (it != NULL ) {
20162005 if (array_iter_extend ((arrayobject * )a , it ) == -1 ) {
20172006 Py_DECREF (it );
0 commit comments