]> granicus.if.org Git - python/commitdiff
Use unsigned division and modulo for item assignment as well.
authorRaymond Hettinger <python@rcn.com>
Sun, 1 Mar 2015 01:49:47 +0000 (17:49 -0800)
committerRaymond Hettinger <python@rcn.com>
Sun, 1 Mar 2015 01:49:47 +0000 (17:49 -0800)
Modules/_collectionsmodule.c

index d12f0e8769ec01cdf7758e57cb08c8c2e0a7d709..908cfd2f3e1cebb5f564ca5f7f7938ee2dd2169a 100644 (file)
@@ -780,7 +780,6 @@ deque_item(dequeobject *deque, Py_ssize_t i)
         b = deque->rightblock;
     } else {
         i += deque->leftindex;
-        assert(i >= 0);
         n = (Py_ssize_t)((unsigned) i / BLOCKLEN);
         i = (Py_ssize_t)((unsigned) i % BLOCKLEN);
         if (index < (Py_SIZE(deque) >> 1)) {
@@ -840,14 +839,16 @@ deque_ass_item(dequeobject *deque, Py_ssize_t i, PyObject *v)
         return deque_del_item(deque, i);
 
     i += deque->leftindex;
-    n = i / BLOCKLEN;
-    i %= BLOCKLEN;
+    n = (Py_ssize_t)((unsigned) i / BLOCKLEN);
+    i = (Py_ssize_t)((unsigned) i % BLOCKLEN);
     if (index <= halflen) {
         b = deque->leftblock;
         while (n--)
             b = b->rightlink;
     } else {
-        n = (deque->leftindex + len - 1) / BLOCKLEN - n;
+        n = (Py_ssize_t)(
+                ((unsigned)(deque->leftindex + Py_SIZE(deque) - 1))
+                / BLOCKLEN - n);
         b = deque->rightblock;
         while (n--)
             b = b->leftlink;