program: adjust account load ordering to match builtin #44
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.
Problem
Working with the Firedancer tooling some more, I realized that - in many cases - the builtin version of ALT will load an account and then run one or more checks on it before moving onto loading the next one.
In the BPF version, we follow the common BPF program pattern of loading all accounts up front with subsequent calls to
next_account_info
. However, this can causeProgramError::NotEnoughAccountKeys
in situations where the builtin may have thrown a different error (such asInstructionError::IncorrectOwner
).Summary
Change the ordering of account loads and checks to exactly match the builtin version.