mirror of https://github.com/python/cpython
Fix buglet in slice assignment of bytesobjects: assigning to b[3:0] ('stop'
being before 'start') would actually assign to b[0:0] (or whatever 'stop' was)
This commit is contained in:
parent
fbfe093607
commit
9a6e62b947
|
@ -236,6 +236,9 @@ class BytesTest(unittest.TestCase):
|
|||
b[3:5] = [3, 4, 5, 6]
|
||||
self.assertEqual(b, bytes(range(10)))
|
||||
|
||||
b[3:0] = [42, 42, 42]
|
||||
self.assertEqual(b, bytes([0, 1, 2, 42, 42, 42, 3, 4, 5, 6, 7, 8, 9]))
|
||||
|
||||
def test_setslice_trap(self):
|
||||
# This test verifies that we correctly handle assigning self
|
||||
# to a slice of self (the old Lambert Meertens trap).
|
||||
|
|
|
@ -310,6 +310,8 @@ bytes_setslice(PyBytesObject *self, Py_ssize_t lo, Py_ssize_t hi,
|
|||
|
||||
if (lo < 0)
|
||||
lo = 0;
|
||||
if (hi < lo)
|
||||
hi = lo;
|
||||
if (hi > self->ob_size)
|
||||
hi = self->ob_size;
|
||||
|
||||
|
|
Loading…
Reference in New Issue