From fe4019ec0495d18e67a9d3a007917df6a1ac7e51 Mon Sep 17 00:00:00 2001
From: Matthieu Schaller <matthieu.schaller@durham.ac.uk>
Date: Tue, 6 Dec 2016 14:44:37 +0000
Subject: [PATCH] Correct locking/unlocking of drift task

---
 src/task.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/src/task.c b/src/task.c
index ceea09126c..d787e92af8 100644
--- a/src/task.c
+++ b/src/task.c
@@ -261,6 +261,11 @@ void task_unlock(struct task *t) {
   /* Act based on task type. */
   switch (type) {
 
+    case task_type_drift:
+      cell_unlocktree(ci);
+      cell_gunlocktree(ci);
+      break;
+    
     case task_type_sort:
       cell_unlocktree(ci);
       break;
@@ -328,6 +333,15 @@ int task_lock(struct task *t) {
 #endif
       break;
 
+    case task_type_drift:
+      if (ci->hold || ci->ghold) return 0;
+      if (cell_locktree(ci) != 0) return 0;
+      if (cell_glocktree(ci) != 0) {
+	cell_unlocktree(ci);
+	return 0;
+      }
+      break;
+
     case task_type_sort:
       if (cell_locktree(ci) != 0) return 0;
       break;
-- 
GitLab