Skip to content

Commit 51fc171

Browse files
add bounds check
1 parent 4f99ee5 commit 51fc171

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

pallets/subtensor/src/uids.rs

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,24 @@ impl<T: Config> Pallet<T> {
99
SubnetworkN::<T>::get(netuid)
1010
}
1111

12+
fn clear_element_at<N>(position: u16) -> impl Fn(&mut Vec<N>)
13+
where
14+
N: From<u8>,
15+
{
16+
move |vec: &mut Vec<N>| {
17+
if vec.len() > position as usize {
18+
vec[position as usize] = N::from(0);
19+
};
20+
}
21+
}
22+
1223
/// Resets the trust, emission, consensus, incentive, dividends of the neuron to default
1324
pub fn clear_neuron(netuid: u16, neuron_uid: u16) {
14-
Emission::<T>::mutate(netuid, |v| v[neuron_uid as usize] = 0);
15-
Trust::<T>::mutate(netuid, |v| v[neuron_uid as usize] = 0);
16-
Consensus::<T>::mutate(netuid, |v| v[neuron_uid as usize] = 0);
17-
Incentive::<T>::mutate(netuid, |v| v[neuron_uid as usize] = 0);
18-
Dividends::<T>::mutate(netuid, |v| v[neuron_uid as usize] = 0);
25+
Emission::<T>::mutate(netuid, Self::clear_element_at(neuron_uid));
26+
Trust::<T>::mutate(netuid, Self::clear_element_at(neuron_uid));
27+
Consensus::<T>::mutate(netuid, Self::clear_element_at(neuron_uid));
28+
Incentive::<T>::mutate(netuid, Self::clear_element_at(neuron_uid));
29+
Dividends::<T>::mutate(netuid, Self::clear_element_at(neuron_uid));
1930
}
2031

2132
/// Replace the neuron under this uid.

0 commit comments

Comments
 (0)