throw error(resource_error(memory), []) when the list length exceeds usize.

This commit is contained in:
Skgland
2025-12-10 00:04:24 +01:00
committed by Bennet Bleßmann
parent 00aba96185
commit 129cca53ed
2 changed files with 2 additions and 10 deletions

View File

@@ -76,7 +76,6 @@ impl ValidType {
#[derive(Debug, Clone, Copy)] #[derive(Debug, Clone, Copy)]
pub(crate) enum ResourceError { pub(crate) enum ResourceError {
FiniteMemory(HeapCellValue),
OutOfFiles, OutOfFiles,
} }
@@ -330,12 +329,6 @@ impl MachineState {
pub(super) fn resource_error(err: ResourceError) -> MachineError { pub(super) fn resource_error(err: ResourceError) -> MachineError {
let stub = match err { let stub = match err {
ResourceError::FiniteMemory(size_requested) => {
functor!(
atom!("resource_error"),
[atom_as_cell((atom!("finite_memory"))), cell(size_requested)]
)
}
ResourceError::OutOfFiles => { ResourceError::OutOfFiles => {
functor!( functor!(
atom!("resource_error"), atom!("resource_error"),

View File

@@ -4371,7 +4371,6 @@ impl Machine {
#[inline(always)] #[inline(always)]
pub(crate) fn det_length_rundown(&mut self) -> CallResult { pub(crate) fn det_length_rundown(&mut self) -> CallResult {
let stub_gen = || functor_stub(atom!("length"), 2);
let len = self.deref_register(2); let len = self.deref_register(2);
let n = match Number::try_from((len, &self.machine_st.arena.f64_tbl)) { let n = match Number::try_from((len, &self.machine_st.arena.f64_tbl)) {
@@ -4379,8 +4378,8 @@ impl Machine {
Ok(Number::Integer(n)) => match (&*n).try_into() as Result<usize, _> { Ok(Number::Integer(n)) => match (&*n).try_into() as Result<usize, _> {
Ok(n) => n, Ok(n) => n,
Err(_) => { Err(_) => {
let err = MachineState::resource_error(ResourceError::FiniteMemory(len)); self.machine_st.throw_resource_error(AllocError);
return Err(self.machine_st.error_form(err, stub_gen())); return Ok(());
} }
}, },
_ => { _ => {