Parcourir la source

Fix memleak in bounds

Samuel Thibault il y a 5 ans
Parent
commit
031e103fcf
1 fichiers modifiés avec 11 ajouts et 2 suppressions
  1. 11 2
      src/profiling/bound.c

+ 11 - 2
src/profiling/bound.c

@@ -161,6 +161,16 @@ static void _starpu_bound_clear(int record, int deps, int prio)
 	while (t != NULL)
 	{
 		struct bound_task *next = t->next;
+		unsigned i,j;
+		for (i = 0; i < STARPU_NARCH; i++)
+		{
+			if (t->duration[i])
+			{
+				for (j = 0; t->duration[i][j]; j++)
+					free(t->duration[i][j]);
+				free(t->duration[i]);
+			}
+		}
 		free(t);
 		t = next;
 	}
@@ -248,8 +258,7 @@ static void new_task(struct _starpu_job *j)
 	if (j->bound_task)
 		return;
 
-	_STARPU_MALLOC(t, sizeof(*t));
-	memset(t, 0, sizeof(*t));
+	_STARPU_CALLOC(t, 1, sizeof(*t));
 	t->id = j->job_id;
 	t->tag_id = j->task->tag_id;
 	t->use_tag = j->task->use_tag;