Kaydet (Commit) d79d5b1a authored tarafından Raymond Hettinger's avatar Raymond Hettinger

More logicial order. Move space saving step to just before it is used.

üst 96c058b4
...@@ -386,6 +386,13 @@ deque_extend(dequeobject *deque, PyObject *iterable) ...@@ -386,6 +386,13 @@ deque_extend(dequeobject *deque, PyObject *iterable)
return result; return result;
} }
it = PyObject_GetIter(iterable);
if (it == NULL)
return NULL;
if (maxlen == 0)
return consume_iterator(it);
/* Space saving heuristic. Start filling from the left */ /* Space saving heuristic. Start filling from the left */
if (Py_SIZE(deque) == 0) { if (Py_SIZE(deque) == 0) {
assert(deque->leftblock == deque->rightblock); assert(deque->leftblock == deque->rightblock);
...@@ -394,13 +401,6 @@ deque_extend(dequeobject *deque, PyObject *iterable) ...@@ -394,13 +401,6 @@ deque_extend(dequeobject *deque, PyObject *iterable)
deque->rightindex = 0; deque->rightindex = 0;
} }
it = PyObject_GetIter(iterable);
if (it == NULL)
return NULL;
if (maxlen == 0)
return consume_iterator(it);
iternext = *Py_TYPE(it)->tp_iternext; iternext = *Py_TYPE(it)->tp_iternext;
while ((item = iternext(it)) != NULL) { while ((item = iternext(it)) != NULL) {
if (deque_append_internal(deque, item, maxlen) < 0) { if (deque_append_internal(deque, item, maxlen) < 0) {
...@@ -433,6 +433,13 @@ deque_extendleft(dequeobject *deque, PyObject *iterable) ...@@ -433,6 +433,13 @@ deque_extendleft(dequeobject *deque, PyObject *iterable)
return result; return result;
} }
it = PyObject_GetIter(iterable);
if (it == NULL)
return NULL;
if (maxlen == 0)
return consume_iterator(it);
/* Space saving heuristic. Start filling from the right */ /* Space saving heuristic. Start filling from the right */
if (Py_SIZE(deque) == 0) { if (Py_SIZE(deque) == 0) {
assert(deque->leftblock == deque->rightblock); assert(deque->leftblock == deque->rightblock);
...@@ -441,13 +448,6 @@ deque_extendleft(dequeobject *deque, PyObject *iterable) ...@@ -441,13 +448,6 @@ deque_extendleft(dequeobject *deque, PyObject *iterable)
deque->rightindex = BLOCKLEN - 2; deque->rightindex = BLOCKLEN - 2;
} }
it = PyObject_GetIter(iterable);
if (it == NULL)
return NULL;
if (maxlen == 0)
return consume_iterator(it);
iternext = *Py_TYPE(it)->tp_iternext; iternext = *Py_TYPE(it)->tp_iternext;
while ((item = iternext(it)) != NULL) { while ((item = iternext(it)) != NULL) {
if (deque_appendleft_internal(deque, item, maxlen) < 0) { if (deque_appendleft_internal(deque, item, maxlen) < 0) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment