diff TaskManager/kernel/ppe/TaskManagerImpl.cc @ 809:76a39ad68846

fix
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 22 May 2010 23:23:29 +0900
parents 3763d29f41a3
children c7905ead974f
line wrap: on
line diff
--- a/TaskManager/kernel/ppe/TaskManagerImpl.cc	Sat May 22 22:32:41 2010 +0900
+++ b/TaskManager/kernel/ppe/TaskManagerImpl.cc	Sat May 22 23:23:29 2010 +0900
@@ -180,14 +180,19 @@
 
 void
 TaskManagerImpl::set_taskList(HTaskPtr htask, TaskListInfoPtr taskList) {
-    TaskListPtr list = taskList->getLast();
+    TaskListPtr list ; 
+    if ( taskList->empty() ) {
+	list = taskList->create();
+	taskList->addLast(list);
+    } else 
+	list = taskList->getLast();
     SimpleTaskPtr task = &list->tasks[list->length++];
     if (htask->command==TaskArray1) {
 	// compatibility
 	int next = ((htask->r_size)/sizeof(SimpleTask))+1;
 	if (list->length+next>=TASK_MAX_SIZE) {
 	    list->length--;
-	    TaskListPtr newList = taskListImpl->create();
+	    TaskListPtr newList = taskList->create();
 	    taskList->addLast(newList);
 	    list = newList;
 	    task = &list->tasks[list->length++];
@@ -205,7 +210,7 @@
 	*task = *(SimpleTask*)htask;
     }
     if (list->length >= TASK_MAX_SIZE) {
-	TaskListPtr newList = taskListImpl->create();
+	TaskListPtr newList = taskList->create();
 	taskList->addLast(newList);
 	list = newList;
     }