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