Skip to content

Commit cd926b5

Browse files
Fix bug
1 parent 7795fe5 commit cd926b5

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

Lib/test/test_deque.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1076,6 +1076,18 @@ def test_slice_preserves_subclass(self, dq, start, stop, step):
10761076
self.assertEqual(list(view), expected)
10771077
self.assertEqual(view.maxlen, d.maxlen)
10781078

1079+
@hypothesis.given(items=st.lists(st.integers()), maxlen=st.integers(min_value=0))
1080+
def test_slice_and_copy_preserve_large_maxlen(self, items, maxlen):
1081+
d = Deque(items, maxlen)
1082+
1083+
sliced = d[:]
1084+
self.assertIsInstance(sliced, Deque)
1085+
self.assertEqual(sliced.maxlen, maxlen)
1086+
1087+
copied = d.copy()
1088+
self.assertIsInstance(copied, Deque)
1089+
self.assertEqual(copied.maxlen, maxlen)
1090+
10791091
def test_basics(self):
10801092
d = Deque(range(25))
10811093
d.__init__(range(200))

Modules/_collectionsmodule.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -647,8 +647,8 @@ deque_copy_impl(dequeobject *deque)
647647
result = PyObject_CallOneArg((PyObject *)(Py_TYPE(deque)),
648648
(PyObject *)deque);
649649
else
650-
result = PyObject_CallFunction((PyObject *)(Py_TYPE(deque)), "Oi",
651-
deque, old_deque->maxlen, NULL);
650+
result = PyObject_CallFunction((PyObject *)(Py_TYPE(deque)), "On",
651+
deque, old_deque->maxlen);
652652
if (result != NULL && !PyObject_TypeCheck(result, state->deque_type)) {
653653
PyErr_Format(PyExc_TypeError,
654654
"%.200s() must return a deque, not %.200s",
@@ -1314,8 +1314,8 @@ deque_slice_lock_held(dequeobject *deque, PyObject *slice)
13141314
result = PyObject_CallOneArg((PyObject *)(Py_TYPE(deque)), values);
13151315
}
13161316
else {
1317-
result = PyObject_CallFunction((PyObject *)(Py_TYPE(deque)), "Oi",
1318-
values, deque->maxlen, NULL);
1317+
result = PyObject_CallFunction((PyObject *)(Py_TYPE(deque)), "On",
1318+
values, deque->maxlen);
13191319
}
13201320
Py_DECREF(values);
13211321
if (result != NULL && !PyObject_TypeCheck(result, state->deque_type)) {

0 commit comments

Comments
 (0)