From 840533bf1c7e5cb9b565067795df28a41b61844e Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Sat, 13 Jul 2013 17:03:58 -0700 Subject: Use a do-while loop in the inner loop for rotate (m is always greater than zero). --- Modules/_collectionsmodule.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Modules/_collectionsmodule.c b/Modules/_collectionsmodule.c index 44ed0b2f6a..21cc21dac9 100644 --- a/Modules/_collectionsmodule.c +++ b/Modules/_collectionsmodule.c @@ -506,13 +506,15 @@ _deque_rotate(dequeobject *deque, Py_ssize_t n) rightindex -= m; leftindex -= m; n -= m; - while (m--) + do { *(dest--) = *(src--); + } while (--m); } if (rightindex == -1) { block *prevblock = rightblock->leftlink; assert(leftblock != rightblock); + assert(b == NULL); b = rightblock; CHECK_NOT_END(prevblock); MARK_END(prevblock->rightlink); @@ -551,13 +553,15 @@ _deque_rotate(dequeobject *deque, Py_ssize_t n) leftindex += m; rightindex += m; n += m; - while (m--) + do { *(dest++) = *(src++); + } while (--m); } if (leftindex == BLOCKLEN) { block *nextblock = leftblock->rightlink; assert(leftblock != rightblock); + assert(b == NULL); b = leftblock; CHECK_NOT_END(nextblock); MARK_END(nextblock->leftlink); -- cgit v1.2.1