Index: src/libchcore/TTaskManager.cpp
===================================================================
diff -u -N -r2fe97a93f21771d75901d4b6559057d1ea055104 -rc9092a6f41bed1c132d5d5ddfe430e8b3ddd70ca
--- src/libchcore/TTaskManager.cpp	(.../TTaskManager.cpp)	(revision 2fe97a93f21771d75901d4b6559057d1ea055104)
+++ src/libchcore/TTaskManager.cpp	(.../TTaskManager.cpp)	(revision c9092a6f41bed1c132d5d5ddfe430e8b3ddd70ca)
@@ -155,7 +155,9 @@
 				THROW_CORE_EXCEPTION(eErr_InvalidPointer);
 
 			// delete only when the thread is finished
-			if((spTask->GetTaskState() == eTaskState_Finished || spTask->GetTaskState() == eTaskState_Cancelled))
+			ETaskCurrentState eState = spTask->GetTaskState();
+
+			if((eState == eTaskState_Finished || eState == eTaskState_Cancelled || eState == eTaskState_LoadError))
 			{
 				spTask->KillThread();
 
@@ -191,14 +193,19 @@
 				THROW_CORE_EXCEPTION(eErr_InvalidPointer);
 
 			// delete only when the thread is finished
-			if(spTask == spSelTask && (spTask->GetTaskState() == eTaskState_Finished || spTask->GetTaskState() == eTaskState_Cancelled))
+			if(spTask == spSelTask)
 			{
-				spTask->KillThread();
+				ETaskCurrentState eState = spTask->GetTaskState();
 
-				spTask->OnUnregisterTask();
+				if(eState == eTaskState_Finished || eState == eTaskState_Cancelled || eState == eTaskState_LoadError)
+				{
+					spTask->KillThread();
 
-				vTasksToRemove.push_back(rEntry.GetTaskSerializeLocation());
-				m_tTasks.RemoveAt(stIndex);
+					spTask->OnUnregisterTask();
+
+					vTasksToRemove.push_back(rEntry.GetTaskSerializeLocation());
+					m_tTasks.RemoveAt(stIndex);
+				}
 				break;
 			}
 		}
@@ -346,7 +353,7 @@
 				THROW_CORE_EXCEPTION(eErr_InvalidPointer);
 
 			ETaskCurrentState eState = spTask->GetTaskState();
-			bFlag = (eState == eTaskState_Finished || eState == eTaskState_Cancelled || eState == eTaskState_Paused || eState == eTaskState_Error);
+			bFlag = (eState == eTaskState_Finished || eState == eTaskState_Cancelled || eState == eTaskState_Paused || eState == eTaskState_Error || eState == eTaskState_LoadError);
 
 			if(!bFlag)
 				break;