]> granicus.if.org Git - python/commitdiff
Issue 16398: Add assertions to show why memcmp is safe.
authorRaymond Hettinger <python@rcn.com>
Sat, 2 Feb 2013 19:24:43 +0000 (11:24 -0800)
committerRaymond Hettinger <python@rcn.com>
Sat, 2 Feb 2013 19:24:43 +0000 (11:24 -0800)
Modules/_collectionsmodule.c

index e0c6f0c9542fcb05111334931a6cd7603d816eb7..17b1ad68e1cd6d0f89f95bcf9c3f26a9504c6627 100644 (file)
@@ -425,8 +425,9 @@ _deque_rotate(dequeobject *deque, Py_ssize_t n)
         else if (n < -halflen)
             n += len;
     }
-
     assert(deque->len > 1);
+    assert((n < len / 2) || (n > len / -2));
+
     deque->state++;
     for (i=0 ; i<n ; ) {
         if (deque->leftindex == 0) {
@@ -446,6 +447,8 @@ _deque_rotate(dequeobject *deque, Py_ssize_t n)
         if (m > deque->leftindex)
             m = deque->leftindex;
         assert (m > 0);
+        assert (deque->leftblock != deque->rightblock ||
+                deque->leftindex < deque->rightindex - m + 1);
         memcpy(&deque->leftblock->data[deque->leftindex - m],
                &deque->rightblock->data[deque->rightindex - m + 1],
                m * sizeof(PyObject *));