]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
rlimit-util: add a common destructor call for arrays of struct rlimit
authorLennart Poettering <lennart@poettering.net>
Thu, 3 May 2018 17:05:59 +0000 (19:05 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 17 May 2018 18:36:52 +0000 (20:36 +0200)
src/basic/rlimit-util.c
src/basic/rlimit-util.h
src/core/execute.c
src/core/manager.c

index 154b34b8c1b54c2bbbcd4372e111ecc6d3842c11..7bae9f0ad0ce3af6c6b3e87b12839488e4468735 100644 (file)
@@ -324,3 +324,13 @@ int rlimit_from_string_harder(const char *s) {
 
         return rlimit_from_string(s);
 }
+
+void rlimit_free_all(struct rlimit **rl) {
+        int i;
+
+        if (!rl)
+                return;
+
+        for (i = 0; i < _RLIMIT_MAX; i++)
+                rl[i] = mfree(rl[i]);
+}
index 42f2e0e5471cd0dcbff0c3ff9821dcc34127a426..067e040c61b2a543c9f68248f2c31107b9a6f1b7 100644 (file)
@@ -22,4 +22,6 @@ int rlimit_parse(int resource, const char *val, struct rlimit *ret);
 
 int rlimit_format(const struct rlimit *rl, char **ret);
 
+void rlimit_free_all(struct rlimit **rl);
+
 #define RLIMIT_MAKE_CONST(lim) ((struct rlimit) { lim, lim })
index d60e8f6a1ac947d74a3d3051a46814c4985fae2a..3349bbaccbf4feb93e4de5e959f123ca03c98a61 100644 (file)
@@ -3574,8 +3574,7 @@ void exec_context_done(ExecContext *c) {
         c->pass_environment = strv_free(c->pass_environment);
         c->unset_environment = strv_free(c->unset_environment);
 
-        for (l = 0; l < ELEMENTSOF(c->rlimit); l++)
-                c->rlimit[l] = mfree(c->rlimit[l]);
+        rlimit_free_all(c->rlimit);
 
         for (l = 0; l < 3; l++) {
                 c->stdio_fdname[l] = mfree(c->stdio_fdname[l]);
index a4cea85136f2d31863825a64a2666817ae50b8e1..4a2f68b56725c15be4fed7226ce30abe9bfe61be 100644 (file)
@@ -64,6 +64,7 @@
 #include "path-util.h"
 #include "process-util.h"
 #include "ratelimit.h"
+#include "rlimit-util.h"
 #include "rm-rf.h"
 #include "signal-util.h"
 #include "socket-util.h"
@@ -1174,7 +1175,6 @@ static void manager_clear_jobs_and_units(Manager *m) {
 
 Manager* manager_free(Manager *m) {
         UnitType c;
-        int i;
         ExecDirectoryType dt;
 
         if (!m)
@@ -1242,8 +1242,7 @@ Manager* manager_free(Manager *m) {
         free(m->switch_root);
         free(m->switch_root_init);
 
-        for (i = 0; i < _RLIMIT_MAX; i++)
-                m->rlimit[i] = mfree(m->rlimit[i]);
+        rlimit_free_all(m->rlimit);
 
         assert(hashmap_isempty(m->units_requiring_mounts_for));
         hashmap_free(m->units_requiring_mounts_for);