lamports += -> checked_add_lamports (#16791)
This commit is contained in:
parent
81402ee7f5
commit
4e7e675c07
|
@ -421,7 +421,9 @@ fn process_loader_upgradeable_instruction(
|
|||
program.try_account_ref_mut()?.executable = true;
|
||||
|
||||
// Drain the Buffer account back to the payer
|
||||
payer.try_account_ref_mut()?.lamports += buffer.lamports()?;
|
||||
payer
|
||||
.try_account_ref_mut()?
|
||||
.checked_add_lamports(buffer.lamports()?)?;
|
||||
buffer.try_account_ref_mut()?.lamports = 0;
|
||||
|
||||
ic_logger_msg!(logger, "Deployed program {:?}", program.unsigned_key());
|
||||
|
@ -547,9 +549,10 @@ fn process_loader_upgradeable_instruction(
|
|||
|
||||
// Fund ProgramData to rent-exemption, spill the rest
|
||||
|
||||
spill.try_account_ref_mut()?.lamports += (programdata.lamports()?
|
||||
+ buffer.lamports()?)
|
||||
.saturating_sub(programdata_balance_required);
|
||||
spill.try_account_ref_mut()?.checked_add_lamports(
|
||||
(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;
|
||||
|
||||
|
@ -640,7 +643,9 @@ fn process_loader_upgradeable_instruction(
|
|||
return Err(InstructionError::MissingRequiredSignature);
|
||||
}
|
||||
|
||||
recipient_account.try_account_ref_mut()?.lamports += close_account.lamports()?;
|
||||
recipient_account
|
||||
.try_account_ref_mut()?
|
||||
.checked_add_lamports(close_account.lamports()?)?;
|
||||
close_account.try_account_ref_mut()?.lamports = 0;
|
||||
for elt in close_account.try_account_ref_mut()?.data_as_mut_slice() {
|
||||
*elt = 0;
|
||||
|
|
|
@ -49,7 +49,9 @@ fn apply_signature(
|
|||
}
|
||||
budget_state.pending_budget = None;
|
||||
contract_keyed_account.try_account_ref_mut()?.lamports -= payment.lamports;
|
||||
to_keyed_account.try_account_ref_mut()?.lamports += payment.lamports;
|
||||
to_keyed_account
|
||||
.try_account_ref_mut()?
|
||||
.checked_add_lamports(payment.lamports)?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
@ -80,7 +82,9 @@ fn apply_timestamp(
|
|||
}
|
||||
budget_state.pending_budget = None;
|
||||
contract_keyed_account.try_account_ref_mut()?.lamports -= payment.lamports;
|
||||
to_keyed_account.try_account_ref_mut()?.lamports += payment.lamports;
|
||||
to_keyed_account
|
||||
.try_account_ref_mut()?
|
||||
.checked_add_lamports(payment.lamports)?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
@ -111,7 +115,9 @@ fn apply_account_data(
|
|||
}
|
||||
budget_state.pending_budget = None;
|
||||
contract_keyed_account.try_account_ref_mut()?.lamports -= payment.lamports;
|
||||
to_keyed_account.try_account_ref_mut()?.lamports += payment.lamports;
|
||||
to_keyed_account
|
||||
.try_account_ref_mut()?
|
||||
.checked_add_lamports(payment.lamports)?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
@ -135,7 +141,9 @@ pub fn process_instruction(
|
|||
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;
|
||||
to_keyed_account.try_account_ref_mut()?.lamports += payment.lamports;
|
||||
to_keyed_account
|
||||
.try_account_ref_mut()?
|
||||
.checked_add_lamports(payment.lamports)?;
|
||||
return Ok(());
|
||||
}
|
||||
let existing =
|
||||
|
|
|
@ -10,7 +10,7 @@ use crate::{
|
|||
};
|
||||
use serde_derive::{Deserialize, Serialize};
|
||||
use solana_sdk::{
|
||||
account::{AccountSharedData, ReadableAccount},
|
||||
account::{AccountSharedData, ReadableAccount, WritableAccount},
|
||||
account_utils::{State, StateMut},
|
||||
clock::{Clock, Epoch, UnixTimestamp},
|
||||
ic_msg,
|
||||
|
@ -1155,7 +1155,9 @@ impl<'a> StakeAccount for KeyedAccount<'a> {
|
|||
self.set_state(&StakeState::Uninitialized)?;
|
||||
}
|
||||
|
||||
split.try_account_ref_mut()?.lamports += lamports;
|
||||
split
|
||||
.try_account_ref_mut()?
|
||||
.checked_add_lamports(lamports)?;
|
||||
self.try_account_ref_mut()?.lamports -= lamports;
|
||||
Ok(())
|
||||
} else {
|
||||
|
@ -1203,7 +1205,7 @@ impl<'a> StakeAccount for KeyedAccount<'a> {
|
|||
// Drain the source stake account
|
||||
let lamports = source_account.lamports()?;
|
||||
source_account.try_account_ref_mut()?.lamports -= lamports;
|
||||
self.try_account_ref_mut()?.lamports += lamports;
|
||||
self.try_account_ref_mut()?.checked_add_lamports(lamports)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
@ -1284,7 +1286,7 @@ impl<'a> StakeAccount for KeyedAccount<'a> {
|
|||
}
|
||||
|
||||
self.try_account_ref_mut()?.lamports -= lamports;
|
||||
to.try_account_ref_mut()?.lamports += lamports;
|
||||
to.try_account_ref_mut()?.checked_add_lamports(lamports)?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
@ -1486,8 +1488,8 @@ pub fn redeem_rewards(
|
|||
inflation_point_calc_tracer,
|
||||
fix_stake_deactivate,
|
||||
) {
|
||||
stake_account.lamports += stakers_reward;
|
||||
vote_account.lamports += voters_reward;
|
||||
stake_account.checked_add_lamports(stakers_reward)?;
|
||||
vote_account.checked_add_lamports(voters_reward)?;
|
||||
|
||||
stake_account.set_state(&StakeState::Stake(meta, stake))?;
|
||||
|
||||
|
@ -3171,7 +3173,7 @@ mod tests {
|
|||
);
|
||||
|
||||
// simulate rewards
|
||||
stake_account.borrow_mut().lamports += 10;
|
||||
stake_account.borrow_mut().checked_add_lamports(10).unwrap();
|
||||
// withdrawal before deactivate works for rewards amount
|
||||
let stake_keyed_account = KeyedAccount::new(&stake_pubkey, true, &stake_account);
|
||||
let to_keyed_account = KeyedAccount::new(&to, false, &to_account);
|
||||
|
@ -3188,7 +3190,7 @@ mod tests {
|
|||
);
|
||||
|
||||
// simulate rewards
|
||||
stake_account.borrow_mut().lamports += 10;
|
||||
stake_account.borrow_mut().checked_add_lamports(10).unwrap();
|
||||
// withdrawal of rewards fails if not in excess of stake
|
||||
let stake_keyed_account = KeyedAccount::new(&stake_pubkey, true, &stake_account);
|
||||
let to_keyed_account = KeyedAccount::new(&to, false, &to_account);
|
||||
|
@ -5964,7 +5966,11 @@ mod tests {
|
|||
stake_keyed_account.deactivate(&clock, &signers).unwrap();
|
||||
|
||||
// Out of band deposit
|
||||
stake_keyed_account.try_account_ref_mut().unwrap().lamports += withdraw_lamports;
|
||||
stake_keyed_account
|
||||
.try_account_ref_mut()
|
||||
.unwrap()
|
||||
.checked_add_lamports(withdraw_lamports)
|
||||
.unwrap();
|
||||
|
||||
clock.epoch += 1;
|
||||
stake_keyed_account
|
||||
|
|
Loading…
Reference in New Issue