add heap_move_ok and heap_move_some helpers

This commit is contained in:
Vinzenz Schroeter 2025-05-05 18:01:35 +02:00
commit 84adf166a9
9 changed files with 55 additions and 89 deletions

View file

@ -1,4 +1,7 @@
use crate::{heap_drop, heap_move, heap_move_nonnull, heap_remove, ByteSlice};
use crate::{
heap_drop, heap_move_nonnull, heap_move_ok, heap_move_some, heap_remove,
ByteSlice,
};
use servicepoint::{
Cp437Grid, Cp437GridCommand, DataRef, Grid, Origin, Packet,
};
@ -23,12 +26,7 @@ pub unsafe extern "C" fn sp_cp437_grid_load(
data: ByteSlice,
) -> *mut Cp437Grid {
let data = unsafe { data.as_slice() };
let grid = Cp437Grid::load(width, height, data);
if let Some(grid) = grid {
heap_move(grid)
} else {
std::ptr::null_mut()
}
heap_move_some(Cp437Grid::load(width, height, data))
}
/// Clones a [Cp437Grid].
@ -147,11 +145,8 @@ pub unsafe extern "C" fn sp_cp437_grid_into_packet(
y: usize,
) -> *mut Packet {
let grid = unsafe { heap_remove(grid) };
match Packet::try_from(Cp437GridCommand {
heap_move_ok(Packet::try_from(Cp437GridCommand {
grid,
origin: Origin::new(x, y),
}) {
Ok(packet) => heap_move(packet),
Err(_) => std::ptr::null_mut(),
}
}))
}