瀏覽代碼

Fix crash when list is empty

Samuel Thibault 8 年之前
父節點
當前提交
885cbf64d0
共有 1 個文件被更改,包括 10 次插入6 次删除
  1. 10 6
      src/sched_policies/prio_deque.h

+ 10 - 6
src/sched_policies/prio_deque.h

@@ -67,9 +67,11 @@ int _starpu_prio_deque_push_back_task(struct _starpu_prio_deque *, struct starpu
 
 static inline struct starpu_task * _starpu_prio_deque_pop_task(struct _starpu_prio_deque *pdeque)
 {
-	struct starpu_task *task = starpu_task_prio_list_pop_front(&pdeque->list);
-	if (task)
-		pdeque->ntasks--;
+	struct starpu_task *task;
+	if (starpu_task_prio_list_empty(&pdeque->list))
+		return NULL;
+	task = starpu_task_prio_list_pop_front(&pdeque->list);
+	pdeque->ntasks--;
 	return task;
 }
 
@@ -80,9 +82,11 @@ struct starpu_task * _starpu_prio_deque_pop_task_for_worker(struct _starpu_prio_
 /* deque a task of the higher priority available */
 static inline struct starpu_task * _starpu_prio_deque_deque_task(struct _starpu_prio_deque *pdeque)
 {
-	struct starpu_task *task = starpu_task_prio_list_pop_back(&pdeque->list);
-	if (task)
-		pdeque->ntasks--;
+	struct starpu_task *task;
+	if (starpu_task_prio_list_empty(&pdeque->list))
+		return NULL;
+	task = starpu_task_prio_list_pop_back(&pdeque->list);
+	pdeque->ntasks--;
 	return task;
 }