922f81dfd1
Prior to this change machine.mem32['foo'] (or using any other non-integer subscript) could result in a fault due to 'foo' being interpreted as an integer. And when writing code it's hard to tell if the fault is due to a bad subscript type, or an integer subscript that specifies an invalid memory address. The type of the object used in the subscript is now tested to be an integer by using mp_obj_get_int_truncated instead of mp_obj_int_get_truncated. The performance hit of this change is minimal, and machine.memX objects are more for convenience than performance (there are many other ways to read/write memory in a faster way), Fixes issue #6588.
49 lines
713 B
Python
49 lines
713 B
Python
# test machine module
|
|
|
|
try:
|
|
try:
|
|
import umachine as machine
|
|
except ImportError:
|
|
import machine
|
|
machine.mem8
|
|
except:
|
|
print("SKIP")
|
|
raise SystemExit
|
|
|
|
print(machine.mem8)
|
|
|
|
try:
|
|
machine.mem16[1]
|
|
except ValueError:
|
|
print("ValueError")
|
|
|
|
try:
|
|
machine.mem16[1] = 1
|
|
except ValueError:
|
|
print("ValueError")
|
|
|
|
try:
|
|
del machine.mem8[0]
|
|
except TypeError:
|
|
print("TypeError")
|
|
|
|
try:
|
|
machine.mem8[0:1]
|
|
except TypeError:
|
|
print("TypeError")
|
|
|
|
try:
|
|
machine.mem8[0:1] = 10
|
|
except TypeError:
|
|
print("TypeError")
|
|
|
|
try:
|
|
machine.mem8["hello"]
|
|
except TypeError:
|
|
print("TypeError")
|
|
|
|
try:
|
|
machine.mem8["hello"] = 10
|
|
except TypeError:
|
|
print("TypeError")
|