change behaviour in supposedly unreachable cases

This commit is contained in:
Bennet Bleßmann
2025-07-26 13:14:29 +02:00
committed by Bennet Bleßmann
parent d2ffd4f4bf
commit dc495f10f8
2 changed files with 15 additions and 3 deletions

View File

@@ -601,6 +601,15 @@ impl MachineState {
} }
} }
pub(super) fn unreachable_error(&self) -> MachineError {
let stub = functor!(atom!("system_error"));
MachineError {
stub,
location: None,
}
}
#[cfg(feature = "ffi")] #[cfg(feature = "ffi")]
pub(super) fn ffi_error(&self, err: FFIError) -> MachineError { pub(super) fn ffi_error(&self, err: FFIError) -> MachineError {
let error_atom = match err { let error_atom = match err {

View File

@@ -8680,6 +8680,7 @@ impl Machine {
self.machine_st.throw_resource_error(resource_err_loc); self.machine_st.throw_resource_error(resource_err_loc);
} }
} }
Ok(())
} else { } else {
#[cfg(unix)] #[cfg(unix)]
{ {
@@ -8697,16 +8698,18 @@ impl Machine {
self.machine_st.throw_resource_error(resource_err_loc); self.machine_st.throw_resource_error(resource_err_loc);
} }
} }
Ok(())
} else { } else {
unify!(self.machine_st, status_r, atom_as_cell!(atom!("unknown"))); let err = self.machine_st.unreachable_error();
Err(self.machine_st.error_form(err, stub_gen()))
} }
} }
#[cfg(not(unix))] #[cfg(not(unix))]
{ {
unify!(self.machine_st, status_r, atom_as_cell!(atom!("unknown"))); let err = self.machine_st.unreachable_error();
Err(self.machine_st.error_form(err, stub_gen()))
} }
} }
Ok(())
} }
Err(_) => { Err(_) => {
let perm_error = self.machine_st.permission_error( let perm_error = self.machine_st.permission_error(