Skip to content

Commit 14d13eb

Browse files
refactor: let wgpu-core impl. OOB as valid. err.
This does not, in fact, remove any bounds checks in practice. It is now a validation error, implemented by the previous commit.
1 parent 1b14f91 commit 14d13eb

File tree

1 file changed

+1
-54
lines changed

1 file changed

+1
-54
lines changed

wgpu/src/api/buffer.rs

Lines changed: 1 addition & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,6 @@ impl Buffer {
242242
/// - If `bounds` has a length less than 1.
243243
pub fn slice<S: RangeBounds<BufferAddress>>(&self, bounds: S) -> BufferSlice<'_> {
244244
let (offset, size) = range_to_offset_size(bounds);
245-
check_buffer_bounds(self.size, offset, size);
246245
BufferSlice {
247246
buffer: self,
248247
offset,
@@ -865,31 +864,6 @@ impl Drop for BufferViewMut<'_> {
865864
}
866865
}
867866

868-
fn check_buffer_bounds(
869-
buffer_size: BufferAddress,
870-
offset: BufferAddress,
871-
size: Option<BufferSize>,
872-
) {
873-
// A slice of length 0 is invalid, so the offset must not be equal to or greater than the buffer size.
874-
if offset >= buffer_size {
875-
panic!(
876-
"slice offset {} is out of range for buffer of size {}",
877-
offset, buffer_size
878-
);
879-
}
880-
881-
if let Some(size) = size {
882-
// Detect integer overflow.
883-
let end = offset.checked_add(size.get());
884-
if end.is_none_or(|end| end > buffer_size) {
885-
panic!(
886-
"slice offset {} size {} is out of range for buffer of size {}",
887-
offset, size, buffer_size
888-
);
889-
}
890-
}
891-
}
892-
893867
fn range_to_offset_size<S: RangeBounds<BufferAddress>>(
894868
bounds: S,
895869
) -> (BufferAddress, Option<BufferSize>) {
@@ -910,7 +884,7 @@ fn range_to_offset_size<S: RangeBounds<BufferAddress>>(
910884

911885
#[cfg(test)]
912886
mod tests {
913-
use super::{check_buffer_bounds, range_to_offset_size, BufferSize};
887+
use super::{range_to_offset_size, BufferSize};
914888

915889
#[test]
916890
fn range_to_offset_size_works() {
@@ -933,31 +907,4 @@ mod tests {
933907
fn range_to_offset_size_panics_for_unbounded_empty_range() {
934908
range_to_offset_size(..0);
935909
}
936-
937-
#[test]
938-
#[should_panic]
939-
fn check_buffer_bounds_panics_for_offset_at_size() {
940-
check_buffer_bounds(100, 100, None);
941-
}
942-
943-
#[test]
944-
fn check_buffer_bounds_works_for_end_in_range() {
945-
check_buffer_bounds(200, 100, BufferSize::new(50));
946-
check_buffer_bounds(200, 100, BufferSize::new(100));
947-
check_buffer_bounds(u64::MAX, u64::MAX - 100, BufferSize::new(100));
948-
check_buffer_bounds(u64::MAX, 0, BufferSize::new(u64::MAX));
949-
check_buffer_bounds(u64::MAX, 1, BufferSize::new(u64::MAX - 1));
950-
}
951-
952-
#[test]
953-
#[should_panic]
954-
fn check_buffer_bounds_panics_for_end_over_size() {
955-
check_buffer_bounds(200, 100, BufferSize::new(101));
956-
}
957-
958-
#[test]
959-
#[should_panic]
960-
fn check_buffer_bounds_panics_for_end_wraparound() {
961-
check_buffer_bounds(u64::MAX, 1, BufferSize::new(u64::MAX));
962-
}
963910
}

0 commit comments

Comments
 (0)