mirror of
https://github.com/micropython/micropython.git
synced 2025-09-09 03:11:08 +02:00
The recently merged 5e9189d6d1
now allows
temporary slices to be allocated on the C stack, which is much better than
allocating them on the GC heap.
Unfortunately there are cases where the C-allocated slice can escape and be
retained as an object, which leads to crashes (because that object points
to the C stack which now has other values on it).
The fix here is to add a new `MP_TYPE_FLAG_SUBSCR_ALLOWS_STACK_SLICE`.
Native types should set this flag if their subscr method is guaranteed not
to hold on to a reference of the slice object.
Fixes issue #17733 (see also #17723).
Signed-off-by: Damien George <damien@micropython.org>
3 lines
73 B
Plaintext
3 lines
73 B
Plaintext
KeyError (slice(None, None, None),)
|
|
[slice(None, 'a', None), 'b'] [1, 2]
|