diff --git a/src/action/action_resource.cpp b/src/action/action_resource.cpp
index 1fac45338..8f46c967d 100644
--- a/src/action/action_resource.cpp
+++ b/src/action/action_resource.cpp
@@ -1103,9 +1103,11 @@ bool COrder_Resource::ActionResourceInit(CUnit &unit)
 		unit.DeAssignWorkerFromMine(*mine);
 		this->Resource.Mine = NULL;
 	}
-	if (goal && goal->CurrentAction() != UnitActionBuilt) {
+	if (goal && goal->IsAlive() && goal->CurrentAction() != UnitActionBuilt) {
 		unit.AssignWorkerToMine(*goal);
 		this->Resource.Mine = goal;
+	} else {
+		return false;
 	}
 
 	UnitGotoGoal(unit, goal, SUB_MOVE_TO_RESOURCE);
@@ -1133,6 +1135,7 @@ void COrder_Resource::Execute(CUnit &unit)
 	// Let's start mining.
 	if (this->State == SUB_START_RESOURCE) {
 		if (ActionResourceInit(unit) == false) {
+			ResourceGiveUp(unit);
 			return;
 		}
 	}