Skip to content

Commit c168599

Browse files
committed
Fix dimforge#310: Matrix index out of bounds. + Clippy
1 parent 921832b commit c168599

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

src/query/clip/clip_aabb_line.rs

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -133,14 +133,17 @@ pub fn clip_aabb_line(
133133
let near = if near_diag {
134134
(tmin, -dir.normalize(), near_side)
135135
} else {
136+
// If near_side is 0, the index calculation would be invalid (-1).
137+
if near_side == 0 {
138+
return None;
139+
}
140+
136141
let mut normal = Vector::zeros();
137142

138143
if near_side < 0 {
139144
normal[(-near_side - 1) as usize] = 1.0;
140-
} else if near_side > 0 {
141-
normal[(near_side - 1) as usize] = -1.0;
142145
} else {
143-
return None;
146+
normal[(near_side - 1) as usize] = -1.0;
144147
}
145148

146149
(tmin, normal, near_side)
@@ -149,14 +152,17 @@ pub fn clip_aabb_line(
149152
let far = if far_diag {
150153
(tmax, -dir.normalize(), far_side)
151154
} else {
155+
// If far_side is 0, the index calculation would be invalid (-1).
156+
if far_side == 0 {
157+
return None;
158+
}
159+
152160
let mut normal = Vector::zeros();
153161

154162
if far_side < 0 {
155163
normal[(-far_side - 1) as usize] = -1.0;
156-
} else if far_side > 0 {
157-
normal[(far_side - 1) as usize] = 1.0;
158164
} else {
159-
return None;
165+
normal[(far_side - 1) as usize] = 1.0;
160166
}
161167

162168
(tmax, normal, far_side)

0 commit comments

Comments
 (0)