Blame SOURCES/libcgroup-0.41-api.c-tasks-file-warning.patch

0a7b38
diff --git a/src/api.c b/src/api.c
0a7b38
index a98e829..d19abdd 100644
0a7b38
--- a/src/api.c
0a7b38
+++ b/src/api.c
0a7b38
@@ -1190,12 +1190,15 @@ static int __cgroup_attach_task_pid(char *path, pid_t tid)
0a7b38
 	if (!tasks) {
0a7b38
 		switch (errno) {
0a7b38
 		case EPERM:
0a7b38
-			return ECGROUPNOTOWNER;
0a7b38
+			ret = ECGROUPNOTOWNER;
0a7b38
+			break;
0a7b38
 		case ENOENT:
0a7b38
-			return ECGROUPNOTEXIST;
0a7b38
+			ret = ECGROUPNOTEXIST;
0a7b38
+			break;
0a7b38
 		default:
0a7b38
-			return ECGROUPNOTALLOWED;
0a7b38
+			ret = ECGROUPNOTALLOWED;
0a7b38
 		}
0a7b38
+		goto err;
0a7b38
 	}
0a7b38
 	ret = fprintf(tasks, "%d", tid);
0a7b38
 	if (ret < 0) {
0a7b38
@@ -1214,7 +1217,8 @@ static int __cgroup_attach_task_pid(char *path, pid_t tid)
0a7b38
 err:
0a7b38
 	cgroup_warn("Warning: cannot write tid %d to %s:%s\n",
0a7b38
 			tid, path, strerror(errno));
0a7b38
-	fclose(tasks);
0a7b38
+	if (tasks)
0a7b38
+		fclose(tasks);
0a7b38
 	return ret;
0a7b38
 }
0a7b38