Fix Python 3 integer division in zmachine modules
Python 2 `/` did integer division, Python 3 returns float. Changed to `//` in zobjectparser (attribute byte offset) and zmemory (address bounds checks). Zork 1 hit this on the first test_attr opcode.
This commit is contained in:
parent
8eb2371ce1
commit
e1c6a92368
2 changed files with 5 additions and 5 deletions
|
|
@ -235,18 +235,18 @@ class ZMemory:
|
|||
|
||||
def word_address(self, address):
|
||||
"""Return the 'actual' address of word address ADDRESS."""
|
||||
if address < 0 or address > (self._total_size / 2):
|
||||
if address < 0 or address > (self._total_size // 2):
|
||||
raise ZMemoryOutOfBounds
|
||||
return address * 2
|
||||
|
||||
def packed_address(self, address):
|
||||
"""Return the 'actual' address of packed address ADDRESS."""
|
||||
if 1 <= self.version <= 3:
|
||||
if address < 0 or address > (self._total_size / 2):
|
||||
if address < 0 or address > (self._total_size // 2):
|
||||
raise ZMemoryOutOfBounds
|
||||
return address * 2
|
||||
elif 4 <= self.version <= 5:
|
||||
if address < 0 or address > (self._total_size / 4):
|
||||
if address < 0 or address > (self._total_size // 4):
|
||||
raise ZMemoryOutOfBounds
|
||||
return address * 4
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -169,12 +169,12 @@ class ZObjectParser:
|
|||
if 1 <= self._memory.version <= 3:
|
||||
if not (0 <= attrnum <= 31):
|
||||
raise ZObjectIllegalAttributeNumber
|
||||
bf = BitField(self._memory[object_addr + (attrnum / 8)])
|
||||
bf = BitField(self._memory[object_addr + (attrnum // 8)])
|
||||
|
||||
elif 4 <= self._memory.version <= 5:
|
||||
if not (0 <= attrnum <= 47):
|
||||
raise ZObjectIllegalAttributeNumber
|
||||
bf = BitField(self._memory[object_addr + (attrnum / 8)])
|
||||
bf = BitField(self._memory[object_addr + (attrnum // 8)])
|
||||
|
||||
else:
|
||||
raise ZObjectIllegalVersion
|
||||
|
|
|
|||
Loading…
Reference in a new issue