From: Skgland Date: Tue, 9 Dec 2025 23:04:24 +0000 (+0100) Subject: throw `error(resource_error(memory), [])` when the list length exceeds usize. X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=129cca53ed03f979be8d79e07a7bcfda4cbbe0d9;p=scryer-prolog.git throw `error(resource_error(memory), [])` when the list length exceeds usize. --- diff --git a/src/machine/machine_errors.rs b/src/machine/machine_errors.rs index 420ab6fe..4ed19893 100644 --- a/src/machine/machine_errors.rs +++ b/src/machine/machine_errors.rs @@ -76,7 +76,6 @@ impl ValidType { #[derive(Debug, Clone, Copy)] pub(crate) enum ResourceError { - FiniteMemory(HeapCellValue), OutOfFiles, } @@ -330,12 +329,6 @@ impl MachineState { pub(super) fn resource_error(err: ResourceError) -> MachineError { let stub = match err { - ResourceError::FiniteMemory(size_requested) => { - functor!( - atom!("resource_error"), - [atom_as_cell((atom!("finite_memory"))), cell(size_requested)] - ) - } ResourceError::OutOfFiles => { functor!( atom!("resource_error"), diff --git a/src/machine/system_calls.rs b/src/machine/system_calls.rs index b7a63aad..ac13c2e5 100644 --- a/src/machine/system_calls.rs +++ b/src/machine/system_calls.rs @@ -4371,7 +4371,6 @@ impl Machine { #[inline(always)] pub(crate) fn det_length_rundown(&mut self) -> CallResult { - let stub_gen = || functor_stub(atom!("length"), 2); let len = self.deref_register(2); 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 { Ok(n) => n, Err(_) => { - let err = MachineState::resource_error(ResourceError::FiniteMemory(len)); - return Err(self.machine_st.error_form(err, stub_gen())); + self.machine_st.throw_resource_error(AllocError); + return Ok(()); } }, _ => {