fix debug_assert and add test for repeat

This commit is contained in:
bendn 2023-09-09 17:54:54 +07:00
parent 51c506425c
commit 36355a5c83
No known key found for this signature in database
GPG key ID: 0D9D3A2A3B2A93D6
3 changed files with 14 additions and 3 deletions

View file

@ -1,6 +1,6 @@
[package] [package]
name = "fimg" name = "fimg"
version = "0.3.3" version = "0.3.4"
authors = ["bend-n <bend.n@outlook.com>"] authors = ["bend-n <bend.n@outlook.com>"]
license = "MIT" license = "MIT"
edition = "2021" edition = "2021"

View file

@ -372,3 +372,13 @@ macro_rules! img {
} }
#[cfg(test)] #[cfg(test)]
use img; use img;
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn repeat() {
let x: Image<&[u8], 3> = Image::build(8, 8).buf(include_bytes!("../benches/3_8x8.imgbuf"));
unsafe { x.repeated(128, 128) }; // repeat 16 times
}
}

View file

@ -131,8 +131,9 @@ impl OverlayAt<Image<&[u8], 3>> for Image<&mut [u8], 3> {
let o_x = ((j + y as usize) * self.width() as usize + x as usize) * 3 let o_x = ((j + y as usize) * self.width() as usize + x as usize) * 3
..((j + y as usize) * self.width() as usize + x as usize + ($n as usize)) ..((j + y as usize) * self.width() as usize + x as usize + ($n as usize))
* 3; * 3;
debug_assert!(o_x.end < self.buffer().len()); // <= because ".." range
debug_assert!(i_x.end < with.buffer().len()); debug_assert!(o_x.end <= self.buffer().len());
debug_assert!(i_x.end <= with.buffer().len());
// SAFETY: bounds are ✅ // SAFETY: bounds are ✅
let a = unsafe { self.buffer.get_unchecked_mut(o_x) }; let a = unsafe { self.buffer.get_unchecked_mut(o_x) };
// SAFETY: we are in ⬜! // SAFETY: we are in ⬜!