summaryrefslogtreecommitdiff
path: root/tests/basics/slice_optimise.py.exp
diff options
context:
space:
mode:
authorDamien George <damien@micropython.org>2025-07-22 13:06:28 +1000
committerDamien George <damien@micropython.org>2025-07-24 14:55:34 +1000
commit3185bb5827acd6a1f27a9299abee52640dd495f2 (patch)
tree4a8bf7ebbe175188b22fdfc8578afee80320459f /tests/basics/slice_optimise.py.exp
parent45aa65b67d075fa8b2e71d57f1a94566f51207bb (diff)
py/obj: Add new type flag to indicate subscr accepts slice-on-stack.
The recently merged 5e9189d6d1c00c92694888bf9c74276779c40716 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>
Diffstat (limited to 'tests/basics/slice_optimise.py.exp')
-rw-r--r--tests/basics/slice_optimise.py.exp2
1 files changed, 2 insertions, 0 deletions
diff --git a/tests/basics/slice_optimise.py.exp b/tests/basics/slice_optimise.py.exp
new file mode 100644
index 000000000..3fa59aae1
--- /dev/null
+++ b/tests/basics/slice_optimise.py.exp
@@ -0,0 +1,2 @@
+KeyError (slice(None, None, None),)
+[slice(None, 'a', None), 'b'] [1, 2]