From 80aae187948baac1651243023bf92b8d1fa2aafe Mon Sep 17 00:00:00 2001 From: Grimes <39311140+solana-grimes@users.noreply.github.com> Date: Wed, 4 Mar 2020 17:10:22 -0800 Subject: [PATCH] Nit: Update native loader to iterate accounts (#8640) automerge --- runtime/src/native_loader.rs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/runtime/src/native_loader.rs b/runtime/src/native_loader.rs index 3406281cec..a9d6711229 100644 --- a/runtime/src/native_loader.rs +++ b/runtime/src/native_loader.rs @@ -7,8 +7,11 @@ use libloading::os::windows::*; use log::*; use num_derive::{FromPrimitive, ToPrimitive}; use solana_sdk::{ - account::KeyedAccount, entrypoint_native, instruction::InstructionError, - program_utils::DecodeError, pubkey::Pubkey, + account::KeyedAccount, + entrypoint_native, + instruction::InstructionError, + program_utils::{next_keyed_account, DecodeError}, + pubkey::Pubkey, }; use std::{env, path::PathBuf, str}; use thiserror::Error; @@ -85,9 +88,10 @@ pub fn invoke_entrypoint( instruction_data: &[u8], symbol_cache: &SymbolCache, ) -> Result<(), InstructionError> { - // dispatch it - let (names, params) = keyed_accounts.split_at(1); - let name_vec = &names[0].try_account_ref()?.data; + let mut keyed_accounts_iter = keyed_accounts.iter(); + let program = next_keyed_account(&mut keyed_accounts_iter)?; + let params = keyed_accounts_iter.as_slice(); + let name_vec = &program.try_account_ref()?.data; if let Some(entrypoint) = symbol_cache.read().unwrap().get(name_vec) { unsafe { return entrypoint(program_id, params, instruction_data);