Resolves an OverflowError in matrix scans (board-breaking)
This commit is contained in:
parent
7297bc4521
commit
cf5ee5d4b2
@ -73,8 +73,19 @@ class MatrixScanner:
|
|||||||
opin.value(True)
|
opin.value(True)
|
||||||
|
|
||||||
for iidx, ipin in enumerate(self.inputs):
|
for iidx, ipin in enumerate(self.inputs):
|
||||||
|
# cast to int to avoid
|
||||||
|
#
|
||||||
|
# >>> xyz = bytearray(3)
|
||||||
|
# >>> xyz[2] = True
|
||||||
|
# Traceback (most recent call last):
|
||||||
|
# File "<stdin>", line 1, in <module>
|
||||||
|
# OverflowError: value would overflow a 1 byte buffer
|
||||||
|
#
|
||||||
|
# I haven't dived too far into what causes this, but it's
|
||||||
|
# almost certainly because bool types in Python aren't just
|
||||||
|
# aliases to int values, but are proper pseudo-types
|
||||||
|
new_val = int(ipin.value())
|
||||||
old_val = self.state[ba_idx]
|
old_val = self.state[ba_idx]
|
||||||
new_val = ipin.value()
|
|
||||||
|
|
||||||
if old_val != new_val:
|
if old_val != new_val:
|
||||||
if self.translate_coords:
|
if self.translate_coords:
|
||||||
@ -97,6 +108,7 @@ class MatrixScanner:
|
|||||||
|
|
||||||
self.report[2] = new_val
|
self.report[2] = new_val
|
||||||
self.state[ba_idx] = new_val
|
self.state[ba_idx] = new_val
|
||||||
|
|
||||||
any_changed = True
|
any_changed = True
|
||||||
break
|
break
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user