- if (variables[i]) {
- if (setenv(variable_names[i], variables[i], 1) < 0) {
- r = -errno;
- goto finish;
- }
- } else
- unsetenv(variable_names[i]);
+ if (!variables[i])
+ continue;
+
+ env = strv_appendf(*environment, "%s=%s", variable_names[i], variables[i]);
+ if (!env) {
+ r = -ENOMEM;
+ goto finish;
+ }
+
+ *environment = env;