]> Repositorios git - scryer-prolog.git/commitdiff
throw `error(resource_error(memory), [])` when the list length exceeds usize.
authorSkgland <[email protected]>
Tue, 9 Dec 2025 23:04:24 +0000 (00:04 +0100)
committerBennet Bleßmann <[email protected]>
Tue, 9 Dec 2025 23:04:24 +0000 (00:04 +0100)
src/machine/machine_errors.rs
src/machine/system_calls.rs

index 420ab6fe61f2106d96757ecad3db627bfb77667a..4ed198934f165f818822d293e773c8a3eb63250a 100644 (file)
@@ -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"),
index b7a63aad5f0d62fd8459fbfd0d258e6fecdaa694..ac13c2e569e7a484d2e5e239e18b3e04d01b3b5a 100644 (file)
@@ -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<usize, _> {
                 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(());
                 }
             },
             _ => {