Fix a bug with sol_get_processed_sibling_instructions syscall #110
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.
The sol_get_processed_sibling_instructions for the accounts parameter, expects a pointer to an array of AccountMeta (of 34 bytes each, Pubkey + 2x bool). The
AccountMeta
struct in Pinocchio has a reference to the Pubkey field instead of an owned version of the Pubkey. This results in the PinocchioAccountMeta
struct only being 16 bytes. The syscall fails because of this since it would try to write data beyond the data of the supplied ptr.This PR adds a RawAccountMeta struct which has an owned version of Pubkey, is therefore 34 bytes long and will work with the syscall.
Other option that should be possible is just define the syscall with
*mut [u8]
instead of creating this extra struct but imo that makes the syscall more difficult to use (you need to figure out the bytes length yourself).@febo lmk what you think!