chiark / gitweb /
json: fix a mem leak
[elogind.git] / src / shared / cgroup-show.c
index 1e14ba6ddb77e92601b02676f9aa49ad2b5b4a53..8ff9be876cba0a3000197f4c327a533ab5222398 100644 (file)
 #include <errno.h>
 
 #include "util.h"
+#include "formats-util.h"
 #include "macro.h"
 #include "path-util.h"
 #include "cgroup-util.h"
 #include "cgroup-show.h"
+#include "terminal-util.h"
 
 static int compare(const void *a, const void *b) {
         const pid_t *p = a, *q = b;
@@ -43,7 +45,9 @@ static int compare(const void *a, const void *b) {
 static void show_pid_array(pid_t pids[], unsigned n_pids, const char *prefix, unsigned n_columns, bool extra, bool more, bool kernel_threads, OutputFlags flags) {
         unsigned i, j, pid_width;
 
-        assert(n_pids > 0);
+        if (n_pids == 0)
+                return;
+
         qsort(pids, n_pids, sizeof(pid_t), compare);
 
         /* Filter duplicates */
@@ -91,7 +95,7 @@ static int show_cgroup_one_by_path(const char *path, const char *prefix, unsigne
         if (r < 0)
                 return r;
 
-        fn = strappenda(p, "/cgroup.procs");
+        fn = strjoina(p, "/cgroup.procs");
         f = fopen(fn, "re");
         if (!f)
                 return -errno;
@@ -111,8 +115,7 @@ static int show_cgroup_one_by_path(const char *path, const char *prefix, unsigne
         if (r < 0)
                 return r;
 
-        if (n > 0)
-                show_pid_array(pids, n, prefix, n_columns, false, more, kernel_threads, flags);
+        show_pid_array(pids, n, prefix, n_columns, false, more, kernel_threads, flags);
 
         return 0;
 }