set_lamports() (#16914)

This commit is contained in:
Jeff Washington (jwash) 2021-04-29 10:43:26 -05:00 committed by GitHub
parent 23d67e4ac7
commit 59e19828ea
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 15 additions and 10 deletions

View File

@ -14,7 +14,7 @@ use {
genesis_utils::{create_genesis_config_with_leader_ex, GenesisConfigInfo}, genesis_utils::{create_genesis_config_with_leader_ex, GenesisConfigInfo},
}, },
solana_sdk::{ solana_sdk::{
account::{Account, AccountSharedData, ReadableAccount}, account::{Account, AccountSharedData, ReadableAccount, WritableAccount},
account_info::AccountInfo, account_info::AccountInfo,
clock::{Clock, Slot}, clock::{Clock, Slot},
entrypoint::{ProgramResult, SUCCESS}, entrypoint::{ProgramResult, SUCCESS},
@ -158,7 +158,7 @@ pub fn builtin_process_instruction(
let mut account = keyed_account.account.borrow_mut(); let mut account = keyed_account.account.borrow_mut();
let key = keyed_account.unsigned_key(); let key = keyed_account.unsigned_key();
let (lamports, data, _owner) = &account_refs[key]; let (lamports, data, _owner) = &account_refs[key];
account.lamports = **lamports.borrow(); account.set_lamports(**lamports.borrow());
account.set_data(data.borrow().to_vec()); account.set_data(data.borrow().to_vec());
} }

View File

@ -424,7 +424,7 @@ fn process_loader_upgradeable_instruction(
payer payer
.try_account_ref_mut()? .try_account_ref_mut()?
.checked_add_lamports(buffer.lamports()?)?; .checked_add_lamports(buffer.lamports()?)?;
buffer.try_account_ref_mut()?.lamports = 0; buffer.try_account_ref_mut()?.set_lamports(0);
ic_logger_msg!(logger, "Deployed program {:?}", program.unsigned_key()); ic_logger_msg!(logger, "Deployed program {:?}", program.unsigned_key());
} }
@ -553,8 +553,10 @@ fn process_loader_upgradeable_instruction(
(programdata.lamports()? + buffer.lamports()?) (programdata.lamports()? + buffer.lamports()?)
.saturating_sub(programdata_balance_required), .saturating_sub(programdata_balance_required),
)?; )?;
buffer.try_account_ref_mut()?.lamports = 0; buffer.try_account_ref_mut()?.set_lamports(0);
programdata.try_account_ref_mut()?.lamports = programdata_balance_required; programdata
.try_account_ref_mut()?
.set_lamports(programdata_balance_required);
ic_logger_msg!(logger, "Upgraded program {:?}", program.unsigned_key()); ic_logger_msg!(logger, "Upgraded program {:?}", program.unsigned_key());
} }
@ -646,7 +648,7 @@ fn process_loader_upgradeable_instruction(
recipient_account recipient_account
.try_account_ref_mut()? .try_account_ref_mut()?
.checked_add_lamports(close_account.lamports()?)?; .checked_add_lamports(close_account.lamports()?)?;
close_account.try_account_ref_mut()?.lamports = 0; close_account.try_account_ref_mut()?.set_lamports(0);
for elt in close_account.try_account_ref_mut()?.data_as_mut_slice() { for elt in close_account.try_account_ref_mut()?.data_as_mut_slice() {
*elt = 0; *elt = 0;
} }

View File

@ -138,8 +138,9 @@ pub fn deserialize_parameters_unaligned(
start += size_of::<u8>(); // is_signer start += size_of::<u8>(); // is_signer
start += size_of::<u8>(); // is_writable start += size_of::<u8>(); // is_writable
start += size_of::<Pubkey>(); // key start += size_of::<Pubkey>(); // key
keyed_account.try_account_ref_mut()?.lamports = keyed_account
LittleEndian::read_u64(&buffer[start..]); .try_account_ref_mut()?
.set_lamports(LittleEndian::read_u64(&buffer[start..]));
start += size_of::<u64>() // lamports start += size_of::<u64>() // lamports
+ size_of::<u64>(); // data length + size_of::<u64>(); // data length
let end = start + keyed_account.data_len()?; let end = start + keyed_account.data_len()?;
@ -269,7 +270,7 @@ pub fn deserialize_parameters_aligned(
+ size_of::<Pubkey>(); // key + size_of::<Pubkey>(); // key
account.copy_into_owner_from_slice(&buffer[start..start + size_of::<Pubkey>()]); account.copy_into_owner_from_slice(&buffer[start..start + size_of::<Pubkey>()]);
start += size_of::<Pubkey>(); // owner start += size_of::<Pubkey>(); // owner
account.lamports = LittleEndian::read_u64(&buffer[start..]); account.set_lamports(LittleEndian::read_u64(&buffer[start..]));
start += size_of::<u64>(); // lamports start += size_of::<u64>(); // lamports
let pre_len = account.data().len(); let pre_len = account.data().len();
let post_len = LittleEndian::read_u64(&buffer[start..]) as usize; let post_len = LittleEndian::read_u64(&buffer[start..]) as usize;

View File

@ -140,7 +140,9 @@ pub fn process_instruction(
if let Some(payment) = expr.final_payment() { if let Some(payment) = expr.final_payment() {
let to_keyed_account = contract_keyed_account; let to_keyed_account = contract_keyed_account;
let contract_keyed_account = keyed_account_at_index(keyed_accounts, 1)?; let contract_keyed_account = keyed_account_at_index(keyed_accounts, 1)?;
contract_keyed_account.try_account_ref_mut()?.lamports = 0; contract_keyed_account
.try_account_ref_mut()?
.set_lamports(0);
to_keyed_account to_keyed_account
.try_account_ref_mut()? .try_account_ref_mut()?
.checked_add_lamports(payment.lamports)?; .checked_add_lamports(payment.lamports)?;