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

View File

@ -424,7 +424,7 @@ fn process_loader_upgradeable_instruction(
payer
.try_account_ref_mut()?
.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());
}
@ -553,8 +553,10 @@ fn process_loader_upgradeable_instruction(
(programdata.lamports()? + buffer.lamports()?)
.saturating_sub(programdata_balance_required),
)?;
buffer.try_account_ref_mut()?.lamports = 0;
programdata.try_account_ref_mut()?.lamports = programdata_balance_required;
buffer.try_account_ref_mut()?.set_lamports(0);
programdata
.try_account_ref_mut()?
.set_lamports(programdata_balance_required);
ic_logger_msg!(logger, "Upgraded program {:?}", program.unsigned_key());
}
@ -646,7 +648,7 @@ fn process_loader_upgradeable_instruction(
recipient_account
.try_account_ref_mut()?
.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() {
*elt = 0;
}

View File

@ -138,8 +138,9 @@ pub fn deserialize_parameters_unaligned(
start += size_of::<u8>(); // is_signer
start += size_of::<u8>(); // is_writable
start += size_of::<Pubkey>(); // key
keyed_account.try_account_ref_mut()?.lamports =
LittleEndian::read_u64(&buffer[start..]);
keyed_account
.try_account_ref_mut()?
.set_lamports(LittleEndian::read_u64(&buffer[start..]));
start += size_of::<u64>() // lamports
+ size_of::<u64>(); // data length
let end = start + keyed_account.data_len()?;
@ -269,7 +270,7 @@ pub fn deserialize_parameters_aligned(
+ size_of::<Pubkey>(); // key
account.copy_into_owner_from_slice(&buffer[start..start + size_of::<Pubkey>()]);
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
let pre_len = account.data().len();
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() {
let to_keyed_account = contract_keyed_account;
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
.try_account_ref_mut()?
.checked_add_lamports(payment.lamports)?;