Kaynağa Gözat

Fix valgrind leak detection in sched_ctx_list

Terry Cojean 9 yıl önce
ebeveyn
işleme
37e497d448
2 değiştirilmiş dosya ile 11 ekleme ve 11 silme
  1. 10 10
      src/core/sched_ctx_list.c
  2. 1 1
      src/core/sched_ctx_list.h

+ 10 - 10
src/core/sched_ctx_list.c

@@ -128,18 +128,18 @@ struct _starpu_sched_ctx_elt* _starpu_sched_ctx_elt_add(struct _starpu_sched_ctx
 
 /* Remove elt from list */
 void _starpu_sched_ctx_elt_remove(struct _starpu_sched_ctx_list *list,
-				 struct _starpu_sched_ctx_elt **elt)
+				 struct _starpu_sched_ctx_elt *elt)
 {
-	(*elt)->prev->next = (*elt)->next;
-	(*elt)->next->prev = (*elt)->prev;
+	elt->prev->next = elt->next;
+	elt->next->prev = elt->prev;
 
-	if ((*elt)->next == (*elt)) //singleton
+	if (elt->next == elt) //singleton
 		list->head = NULL;
-	else if ((*elt)->next != (*elt) && list->head == (*elt))
-		list->head = (*elt)->next;
+	else if (elt->next != elt && list->head == elt)
+		list->head = elt->next;
 
-	free(*elt);
-	*elt = NULL;
+	free(elt);
+	elt = NULL;
 	return;
 }
 
@@ -243,7 +243,7 @@ void _starpu_sched_ctx_list_remove_elt(struct _starpu_sched_ctx_list **list,
 
 	parent = rm->parent;
 
-	_starpu_sched_ctx_elt_remove(parent, &rm);
+	_starpu_sched_ctx_elt_remove(parent, rm);
 
 	/* Automatically clean up useless prio list */
 	if (parent->head == NULL)
@@ -307,7 +307,7 @@ void _starpu_sched_ctx_list_remove_all(struct _starpu_sched_ctx_list *list)
 	struct _starpu_sched_ctx_elt *next = NULL;
 
 	while (list->head != NULL)
-		_starpu_sched_ctx_elt_remove(list, &list->head);
+		_starpu_sched_ctx_elt_remove(list, list->head);
 
 	free(list);
 }

+ 1 - 1
src/core/sched_ctx_list.h

@@ -51,7 +51,7 @@ void _starpu_sched_ctx_elt_init(struct _starpu_sched_ctx_elt *elt, unsigned sche
 struct _starpu_sched_ctx_elt* _starpu_sched_ctx_elt_add_after(struct _starpu_sched_ctx_list *list, unsigned sched_ctx);
 struct _starpu_sched_ctx_elt* _starpu_sched_ctx_elt_add_before(struct _starpu_sched_ctx_list *list, unsigned sched_ctx);
 struct _starpu_sched_ctx_elt* _starpu_sched_ctx_elt_add(struct _starpu_sched_ctx_list *list, unsigned sched_ctx);
-void _starpu_sched_ctx_elt_remove(struct _starpu_sched_ctx_list *list, struct _starpu_sched_ctx_elt **elt);
+void _starpu_sched_ctx_elt_remove(struct _starpu_sched_ctx_list *list, struct _starpu_sched_ctx_elt *elt);
 int _starpu_sched_ctx_elt_exists(struct _starpu_sched_ctx_list *list, unsigned sched_ctx);
 int _starpu_sched_ctx_elt_get_priority(struct _starpu_sched_ctx_list *list, unsigned sched_ctx);