Revert previous two checkins to repair test failure.
The special-case code that was removed could return a value indicating success but leave an exception set. test_fileinput failed in a debug build as a result.
This commit is contained in:
parent
87c1afa057
commit
30973414c5
|
@ -2234,13 +2234,6 @@ list_richcompare(PyObject *v, PyObject *w, int op)
|
||||||
return PyObject_RichCompare(vl->ob_item[i], wl->ob_item[i], op);
|
return PyObject_RichCompare(vl->ob_item[i], wl->ob_item[i], op);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* empirically determined threshold for activating an optimisation
|
|
||||||
* in list_fill() - 100 seems close to optimum for current CPUs and
|
|
||||||
* compilers, as of December '03.
|
|
||||||
* see also comment in list_fill().
|
|
||||||
*/
|
|
||||||
#define LISTFILL_OPT_THRESHOLD 100
|
|
||||||
|
|
||||||
/* Adapted from newer code by Tim */
|
/* Adapted from newer code by Tim */
|
||||||
static int
|
static int
|
||||||
list_fill(PyListObject *result, PyObject *v)
|
list_fill(PyListObject *result, PyObject *v)
|
||||||
|
@ -2255,23 +2248,12 @@ list_fill(PyListObject *result, PyObject *v)
|
||||||
|
|
||||||
n = result->ob_size;
|
n = result->ob_size;
|
||||||
|
|
||||||
/* Special-case list(a_list), for speed:
|
/* Special-case list(a_list), for speed. */
|
||||||
* - if the source has 0 elements, there's nothing to copy.
|
if (PyList_Check(v)) {
|
||||||
* - if the source has more than a threshold number of elements
|
if (v == (PyObject *)result)
|
||||||
* slice assignment is a faster way of filling the target
|
return 0; /* source is destination, we're done */
|
||||||
* (the exact threshold is subject to empirical determination).
|
return list_ass_slice(result, 0, n, v);
|
||||||
* Also special case any other zero length sequence, including
|
}
|
||||||
* subclasses of list, there being nothing to copy.
|
|
||||||
*/
|
|
||||||
if (PyList_CheckExact(v)) {
|
|
||||||
i = PyList_GET_SIZE(v);
|
|
||||||
if (i == 0)
|
|
||||||
return 0;
|
|
||||||
if (i > LISTFILL_OPT_THRESHOLD)
|
|
||||||
return list_ass_slice(result, 0, n, v);
|
|
||||||
} else
|
|
||||||
if (PySequence_Check(v) && PySequence_Size(v) == 0)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/* Empty previous contents */
|
/* Empty previous contents */
|
||||||
if (n != 0) {
|
if (n != 0) {
|
||||||
|
|
Loading…
Reference in New Issue