diff Modules/arraymodule.c @ 28760:22d177682ae1 legacy-trunk

SF 686323: Minor array module enhancements Allows use of tuples for the initializer.
author Raymond Hettinger <python@rcn.com>
date Thu, 24 Apr 2003 10:41:55 +0000
parents bd678e65f784
children 2bb5ceef9ac3
line wrap: on
line diff
--- a/Modules/arraymodule.c	Thu Apr 24 05:45:23 2003 +0000
+++ b/Modules/arraymodule.c	Thu Apr 24 10:41:55 2003 +0000
@@ -1732,7 +1732,7 @@
 		return NULL;
 
 	if (!(initial == NULL || PyList_Check(initial)
-	      || PyString_Check(initial)
+	      || PyString_Check(initial) || PyTuple_Check(initial)
 	      || (c == 'u' && PyUnicode_Check(initial)))) {
 		PyErr_SetString(PyExc_TypeError,
 		    "array initializer must be list or string");
@@ -1742,10 +1742,12 @@
 		if (descr->typecode == c) {
 			PyObject *a;
 			int len;
-			if (initial == NULL || !PyList_Check(initial))
+
+			if (initial == NULL || !(PyList_Check(initial) 
+				|| PyTuple_Check(initial)))
 				len = 0;
 			else
-				len = PyList_Size(initial);
+				len = PySequence_Size(initial);
 
 			a = newarrayobject(type, len, descr);
 			if (a == NULL)
@@ -1755,7 +1757,7 @@
 				int i;
 				for (i = 0; i < len; i++) {
 					PyObject *v =
-					        PyList_GetItem(initial, i);
+					        PySequence_GetItem(initial, i);
 					if (setarrayitem(a, i, v) != 0) {
 						Py_DECREF(a);
 						return NULL;