From 51fea969db3b7da6ff177298b9adc708678faab8 Mon Sep 17 00:00:00 2001 From: Azorlogh Date: Wed, 10 Jul 2024 13:00:07 +0200 Subject: [PATCH] fix overflow in RenderLayers::iter_layers --- crates/bevy_render/src/view/visibility/render_layers.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/crates/bevy_render/src/view/visibility/render_layers.rs b/crates/bevy_render/src/view/visibility/render_layers.rs index a57eb0220f8a2..9c2f5a258de52 100644 --- a/crates/bevy_render/src/view/visibility/render_layers.rs +++ b/crates/bevy_render/src/view/visibility/render_layers.rs @@ -162,7 +162,7 @@ impl RenderLayers { return None; } let next = buffer.trailing_zeros() + 1; - buffer >>= next; + buffer = buffer.checked_shr(next).unwrap_or(0); layer += next as usize; Some(layer - 1) }) @@ -359,4 +359,10 @@ mod rendering_mask_tests { let layers = layers.without(77); assert!(layers.0.len() == 1); } + + #[test] + fn render_layer_iter_no_overflow() { + let layers = RenderLayers::from_layers(&[63]); + layers.iter().count(); + } }