Fix TypeError crash in --thorough mode on V1-3 Z-machine games#3
Open
aliciusschroeder wants to merge 1 commit into
Open
Fix TypeError crash in --thorough mode on V1-3 Z-machine games#3aliciusschroeder wants to merge 1 commit into
aliciusschroeder wants to merge 1 commit into
Conversation
save/restore opcodes use branch semantics in V1-3 but store in V4+. The step() handler unconditionally called set_variable(store_var, ...) which crashed with None when store_var wasn't set for V3 games.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
save/restoreopcodes instep()_do_branch()explorecrashes with--thoroughflag on V1-3 games (TypeError in set_variable) #2Problem
step()unconditionally calledset_variable(store_var, ...)for save/restore, butstore_varisNoneon V1-3games where these opcodes use branch instead of store. Crashed on any V3 game hitting save/restore (triggered by
--thoroughvocabulary scan).Change
zwalker/zmachine.py— save/restore handlers now checkstore_var is not Nonebefore storing, falling back to_do_branch()for V1-3.Test
uv run zwalker explore ./games/zcode/zork1.z3 --thoroughCompletes without crash (687 commands, 16 rooms found).