瀏覽代碼

Free the buffer allocated by _starpu_pack_cl_args in starpu_codelet_unpack_args rather than in starpu_task_insert_callback_wrapper.

This way, users calling starpu_codelet_pack_args() directly will not need to free this buffer, and it still works if starpu_codelet_pack_args is called by StarPU from starpu_insert_task().

Fix a memory leak.
Cyril Roelandt 13 年之前
父節點
當前提交
50fc552808
共有 2 個文件被更改,包括 1 次插入2 次删除
  1. 1 0
      src/util/starpu_insert_task.c
  2. 0 2
      src/util/starpu_insert_task_utils.c

+ 1 - 0
src/util/starpu_insert_task.c

@@ -60,6 +60,7 @@ void starpu_codelet_unpack_args(void *_cl_arg, ...)
 	}
 
 	va_end(varg_list);
+	free(cl_arg);
 }
 
 int starpu_insert_task(struct starpu_codelet *cl, ...)

+ 0 - 2
src/util/starpu_insert_task_utils.c

@@ -39,8 +39,6 @@ void starpu_task_insert_callback_wrapper(void *_cl_arg_wrapper)
 	if (cl_arg_wrapper->callback_func)
 		cl_arg_wrapper->callback_func(cl_arg_wrapper->callback_arg);
 
-	/* Free the stack of arguments */
-	free(cl_arg_wrapper->arg_stack);
 	free(cl_arg_wrapper);
 }