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:
Thomas Wouters 2006-08-23 23:20:29 +00:00
parent fbfe093607
commit 9a6e62b947
2 changed files with 5 additions and 0 deletions

View File

@ -235,6 +235,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

View File

@ -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;