comparison Modules/arraymodule.c @ 42145:8eeaa9923901

Creating an array with a bytes object as initializer should treat the bytes as it treats a string. Not doing this broke re.compile() of big charsets.
author Guido van Rossum <guido@python.org>
date Tue, 03 Jul 2007 16:22:09 +0000
parents 1f7b66a9ffb0
children d0719406b2c6
comparison
equal deleted inserted replaced
42144:ae870228d5f3 42145:8eeaa9923901
1787 1787
1788 if (!PyArg_ParseTuple(args, "C|O:array", &c, &initial)) 1788 if (!PyArg_ParseTuple(args, "C|O:array", &c, &initial))
1789 return NULL; 1789 return NULL;
1790 1790
1791 if (!(initial == NULL || PyList_Check(initial) 1791 if (!(initial == NULL || PyList_Check(initial)
1792 || PyBytes_Check(initial)
1792 || PyString_Check(initial) || PyTuple_Check(initial) 1793 || PyString_Check(initial) || PyTuple_Check(initial)
1793 || (c == 'u' && PyUnicode_Check(initial)))) { 1794 || (c == 'u' && PyUnicode_Check(initial)))) {
1794 it = PyObject_GetIter(initial); 1795 it = PyObject_GetIter(initial);
1795 if (it == NULL) 1796 if (it == NULL)
1796 return NULL; 1797 return NULL;
1830 Py_DECREF(a); 1831 Py_DECREF(a);
1831 return NULL; 1832 return NULL;
1832 } 1833 }
1833 Py_DECREF(v); 1834 Py_DECREF(v);
1834 } 1835 }
1835 } else if (initial != NULL && PyString_Check(initial)) { 1836 } else if (initial != NULL &&
1837 (PyString_Check(initial) || PyBytes_Check(initial))) {
1836 PyObject *t_initial, *v; 1838 PyObject *t_initial, *v;
1837 t_initial = PyTuple_Pack(1, initial); 1839 t_initial = PyTuple_Pack(1, initial);
1838 if (t_initial == NULL) { 1840 if (t_initial == NULL) {
1839 Py_DECREF(a); 1841 Py_DECREF(a);
1840 return NULL; 1842 return NULL;