2019-04-18 00:34:12 -04:00
|
|
|
# test handling of failed heap allocation with list
|
|
|
|
|
|
|
|
import micropython
|
|
|
|
|
2020-03-22 22:26:08 -04:00
|
|
|
|
2019-04-18 00:34:12 -04:00
|
|
|
class GetSlice:
|
|
|
|
def __getitem__(self, idx):
|
|
|
|
return idx
|
2020-03-22 22:26:08 -04:00
|
|
|
|
|
|
|
|
2019-04-18 00:34:12 -04:00
|
|
|
sl = GetSlice()[:]
|
|
|
|
|
|
|
|
# create slice in VM
|
|
|
|
l = [1, 2, 3]
|
|
|
|
micropython.heap_lock()
|
|
|
|
try:
|
|
|
|
print(l[0:1])
|
|
|
|
except MemoryError:
|
2020-03-22 22:26:08 -04:00
|
|
|
print("MemoryError: list index")
|
2019-04-18 00:34:12 -04:00
|
|
|
micropython.heap_unlock()
|
|
|
|
|
|
|
|
# get from list using slice
|
|
|
|
micropython.heap_lock()
|
|
|
|
try:
|
|
|
|
l[sl]
|
|
|
|
except MemoryError:
|
2020-03-22 22:26:08 -04:00
|
|
|
print("MemoryError: list get slice")
|
2019-04-18 00:34:12 -04:00
|
|
|
micropython.heap_unlock()
|
|
|
|
|
|
|
|
# extend list using slice subscr
|
|
|
|
l = [1, 2]
|
|
|
|
l2 = [3, 4, 5, 6, 7, 8, 9, 10]
|
|
|
|
micropython.heap_lock()
|
|
|
|
try:
|
|
|
|
l[sl] = l2
|
|
|
|
except MemoryError:
|
2020-03-22 22:26:08 -04:00
|
|
|
print("MemoryError: list extend slice")
|
2019-04-18 00:34:12 -04:00
|
|
|
micropython.heap_unlock()
|
|
|
|
print(l)
|