initialize_account2.rs 710 B

123456789101112131415161718192021222324
  1. use {
  2. super::shared,
  3. pinocchio::{
  4. account_info::AccountInfo,
  5. pubkey::{Pubkey, PUBKEY_BYTES},
  6. ProgramResult,
  7. },
  8. spl_token_interface::error::TokenError,
  9. };
  10. #[inline(always)]
  11. pub fn process_initialize_account2(
  12. accounts: &[AccountInfo],
  13. instruction_data: &[u8],
  14. ) -> ProgramResult {
  15. let owner = if instruction_data.len() >= PUBKEY_BYTES {
  16. // SAFETY: The minimum size of the instruction data is `PUBKEY_BYTES` bytes.
  17. unsafe { &*(instruction_data.as_ptr() as *const Pubkey) }
  18. } else {
  19. return Err(TokenError::InvalidInstruction.into());
  20. };
  21. shared::initialize_account::process_initialize_account(accounts, Some(owner), true)
  22. }