From 4d0f9a3bf2ef1d30ed48de61a59404a27ccf6244 Mon Sep 17 00:00:00 2001
From: ezsh <ezsh.junk@gmail.com>
Date: Wed, 20 May 2020 22:17:06 +0200
Subject: [PATCH] Fix jobmap managment

removeJob() can select new assignment for a slave, so we have to remove
it from that one, instead of the assignment the slave came to assignJob()
with, when moving him to a new assignment.

Hopefully fixes #1808.
---
 src/js/assignJS.js | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/js/assignJS.js b/src/js/assignJS.js
index 4a3e0f9453e..007db25b71f 100644
--- a/src/js/assignJS.js
+++ b/src/js/assignJS.js
@@ -23,6 +23,7 @@ globalThis.assignJob = function(slave, job) {
 	}
 
 	removeJob(slave, slave.assignment, true);
+	const restingAssignment = slave.assignment; // not necessary Job.REST, but the assignment chosen by removeJob() for her case
 	const idx = V.slaveIndices[slave.ID];
 
 	/**
@@ -402,7 +403,7 @@ globalThis.assignJob = function(slave, job) {
 			break;
 	}
 
-	V.JobIDMap[oldJob].delete(slave.ID);
+	V.JobIDMap[restingAssignment].delete(slave.ID);
 	V.JobIDMap[slave.assignment].add(slave.ID);
 
 	if (!assignmentVisible(slave) && Array.isArray(V.personalAttention)) {
-- 
GitLab