sp_brightness_grid_load ignore out of range
Some checks failed
Rust / build (pull_request) Failing after 30s

This commit is contained in:
Vinzenz Schroeter 2025-04-12 18:49:12 +02:00
parent 2e468fb47a
commit a418e4f0c3
2 changed files with 9 additions and 9 deletions

View file

@ -24,7 +24,7 @@ sort_by = "Name"
[parse]
parse_deps = true
include = ["servicepoint"]
include = ["servicepoint", "std"]
extra_bindings = ["servicepoint"]
[parse.expand]

View file

@ -30,6 +30,8 @@ pub unsafe extern "C" fn sp_brightness_grid_new(
/// Loads a [BrightnessGrid] with the specified dimensions from the provided data.
///
/// Any out of range values will be set to [Brightness::MAX] or [Brightness::MIN].
///
/// returns: new [BrightnessGrid] instance, or NULL in case of an error.
#[no_mangle]
pub unsafe extern "C" fn sp_brightness_grid_load(
@ -38,14 +40,12 @@ pub unsafe extern "C" fn sp_brightness_grid_load(
data: ByteSlice,
) -> *mut BrightnessGrid {
let data = unsafe { data.as_slice() };
let grid = match ByteGrid::load(width, height, data) {
None => return std::ptr::null_mut(),
Some(grid) => grid,
};
if let Ok(grid) = BrightnessGrid::try_from(grid) {
heap_move(grid)
} else {
std::ptr::null_mut()
match ByteGrid::load(width, height, data)
.map(move |grid| grid.map(Brightness::saturating_from))
{
None => std::ptr::null_mut(),
Some(grid) => heap_move(grid),
}
}