diff --git a/engines/sci/engine/segment.h b/engines/sci/engine/segment.h
index a93aaa1..d88c0da 100644
--- a/engines/sci/engine/segment.h
+++ b/engines/sci/engine/segment.h
@@ -433,13 +433,6 @@ public:
 	}
 
 	/**
-	 * Marks the script as not deleted.
-	 */
-	void unmarkDeleted() {
-		_markedAsDeleted = false;
-	}
-
-	/**
 	 * Determines whether the script is marked as being deleted.
 	 */
 	bool isMarkedAsDeleted() const {
diff --git a/engines/sci/engine/vm.cpp b/engines/sci/engine/vm.cpp
index 78f2d24..d518866 100644
--- a/engines/sci/engine/vm.cpp
+++ b/engines/sci/engine/vm.cpp
@@ -208,10 +208,8 @@ ExecStack *execute_method(EngineState *s, uint16 script, uint16 pubfunct, StackP
 	int seg = s->segMan->getScriptSegment(script);
 	Script *scr = s->segMan->getScriptIfLoaded(seg);
 
-	if (!scr)  // Script not present yet?
+	if (!scr || scr->isMarkedAsDeleted()) // Script not present yet?
 		seg = script_instantiate(s->resMan, s->segMan, script);
-	else
-		scr->unmarkDeleted();
 
 	const int temp = s->segMan->validateExportFunc(pubfunct, seg);
 	if (!temp) {
