]> Repositorios git - scryer-prolog.git/commitdiff
check that we don't attempt to un-drop while evacuating
authorBennet Bleßmann <[email protected]>
Sun, 7 Jul 2024 12:37:28 +0000 (14:37 +0200)
committerBennet Bleßmann <[email protected]>
Sun, 7 Jul 2024 12:37:41 +0000 (14:37 +0200)
src/machine/loader.rs

index 886663309947d9a0e8723a2876a74a7c87799be9..0dfdfad20d52c0d56408ca5fe5e00e732c023c79 100644 (file)
@@ -304,11 +304,15 @@ impl<'a> LoadState<'a> for LiveLoadAndMachineState<'a> {
 
     #[inline(always)]
     fn evacuate(mut loader: Loader<'a, Self>) -> Result<Self::Evacuable, SessionError> {
+        if loader.payload.load_state.get_tag() != ArenaHeaderTag::Dropped {
         loader
             .payload
             .load_state
             .set_tag(ArenaHeaderTag::InactiveLoadState);
         Ok(loader.payload.load_state)
+        } else {
+            unreachable!("we never evacuate after dropping")
+        }
     }
 
     #[inline(always)]