Skip to content

Commit

Permalink
Moves change_tick values outside of unsafe blocks
Browse files Browse the repository at this point in the history
  • Loading branch information
mnmaita committed Dec 1, 2022
1 parent bf4367d commit 7d54c34
Showing 1 changed file with 10 additions and 14 deletions.
24 changes: 10 additions & 14 deletions crates/bevy_ecs/src/query/state.rs
Original file line number Diff line number Diff line change
Expand Up @@ -276,11 +276,9 @@ impl<Q: WorldQuery, F: ReadOnlyWorldQuery> QueryState<Q, F> {
entity: Entity,
) -> Result<Q::Item<'w>, QueryEntityError> {
self.update_archetypes(world);
let change_tick = world.change_tick();
// SAFETY: query has unique world access
unsafe {
let change_tick = world.change_tick();
self.get_unchecked_manual(world, entity, world.last_change_tick(), change_tick)
}
unsafe { self.get_unchecked_manual(world, entity, world.last_change_tick(), change_tick) }
}

/// Returns the query results for the given array of [`Entity`].
Expand Down Expand Up @@ -329,10 +327,10 @@ impl<Q: WorldQuery, F: ReadOnlyWorldQuery> QueryState<Q, F> {
) -> Result<[Q::Item<'w>; N], QueryEntityError> {
self.update_archetypes(world);

let change_tick = world.change_tick();
// SAFETY: method requires exclusive world access
// and world has been validated via update_archetypes
unsafe {
let change_tick = world.change_tick();
self.get_many_unchecked_manual(world, entities, world.last_change_tick(), change_tick)
}
}
Expand Down Expand Up @@ -517,10 +515,10 @@ impl<Q: WorldQuery, F: ReadOnlyWorldQuery> QueryState<Q, F> {
/// Returns an [`Iterator`] over the query results for the given [`World`].
#[inline]
pub fn iter_mut<'w, 's>(&'s mut self, world: &'w mut World) -> QueryIter<'w, 's, Q, F> {
let change_tick = world.change_tick();
// SAFETY: query has unique world access
unsafe {
self.update_archetypes(world);
let change_tick = world.change_tick();
self.iter_unchecked_manual(world, world.last_change_tick(), change_tick)
}
}
Expand Down Expand Up @@ -604,10 +602,10 @@ impl<Q: WorldQuery, F: ReadOnlyWorldQuery> QueryState<Q, F> {
&'s mut self,
world: &'w mut World,
) -> QueryCombinationIter<'w, 's, Q, F, K> {
let change_tick = world.change_tick();
// SAFETY: query has unique world access
unsafe {
self.update_archetypes(world);
let change_tick = world.change_tick();
self.iter_combinations_unchecked_manual(world, world.last_change_tick(), change_tick)
}
}
Expand Down Expand Up @@ -655,9 +653,9 @@ impl<Q: WorldQuery, F: ReadOnlyWorldQuery> QueryState<Q, F> {
EntityList::Item: Borrow<Entity>,
{
self.update_archetypes(world);
let change_tick = world.change_tick();
// SAFETY: Query has unique world access.
unsafe {
let change_tick = world.change_tick();
self.iter_many_unchecked_manual(entities, world, world.last_change_tick(), change_tick)
}
}
Expand Down Expand Up @@ -783,10 +781,10 @@ impl<Q: WorldQuery, F: ReadOnlyWorldQuery> QueryState<Q, F> {
/// `iter_mut()` method, but cannot be chained like a normal [`Iterator`].
#[inline]
pub fn for_each_mut<'w, FN: FnMut(Q::Item<'w>)>(&mut self, world: &'w mut World, func: FN) {
let change_tick = world.change_tick();
// SAFETY: query has unique world access
unsafe {
self.update_archetypes(world);
let change_tick = world.change_tick();
self.for_each_unchecked_manual(world, func, world.last_change_tick(), change_tick);
}
}
Expand Down Expand Up @@ -855,10 +853,10 @@ impl<Q: WorldQuery, F: ReadOnlyWorldQuery> QueryState<Q, F> {
batch_size: usize,
func: FN,
) {
let change_tick = world.change_tick();
// SAFETY: query has unique world access
unsafe {
self.update_archetypes(world);
let change_tick = world.change_tick();
self.par_for_each_unchecked_manual(
world,
batch_size,
Expand Down Expand Up @@ -1178,11 +1176,9 @@ impl<Q: WorldQuery, F: ReadOnlyWorldQuery> QueryState<Q, F> {
) -> Result<Q::Item<'w>, QuerySingleError> {
self.update_archetypes(world);

let change_tick = world.change_tick();
// SAFETY: query has unique world access
unsafe {
let change_tick = world.change_tick();
self.get_single_unchecked_manual(world, world.last_change_tick(), change_tick)
}
unsafe { self.get_single_unchecked_manual(world, world.last_change_tick(), change_tick) }
}

/// Returns a query result when there is exactly one entity matching the query.
Expand Down

0 comments on commit 7d54c34

Please sign in to comment.