File tree Expand file tree Collapse file tree 1 file changed +23
-0
lines changed Expand file tree Collapse file tree 1 file changed +23
-0
lines changed Original file line number Diff line number Diff line change 11
11
12
12
#include "fpm_env.h"
13
13
#include "fpm.h"
14
+ #include "fpm_cleanup.h"
14
15
15
16
#ifndef HAVE_SETPROCTITLE
16
17
#if defined(__linux__ ) || defined(__APPLE__ )
@@ -194,6 +195,24 @@ static int fpm_env_conf_wp(struct fpm_worker_pool_s *wp) /* {{{ */
194
195
}
195
196
/* }}} */
196
197
198
+
199
+ #ifndef HAVE_SETPROCTITLE
200
+ #if defined(__linux__ ) || defined(__APPLE__ )
201
+ /* Frees our copied environment variables. */
202
+ static void fpm_env_cleanup (int which , void * arg ) /* {{{ */
203
+ {
204
+ char * * allocated_environ = environ ;
205
+ environ = NULL ;
206
+ unsigned int i = 0 ;
207
+ while (allocated_environ [i ]) {
208
+ free (allocated_environ [i ]);
209
+ i ++ ;
210
+ }
211
+ free (allocated_environ );
212
+ }
213
+ #endif
214
+ #endif
215
+
197
216
int fpm_env_init_main (void )
198
217
{
199
218
struct fpm_worker_pool_s * wp ;
@@ -254,6 +273,10 @@ int fpm_env_init_main(void)
254
273
env_nb ++ ;
255
274
}
256
275
276
+ if (0 > fpm_cleanup_add (FPM_CLEANUP_PARENT_EXIT_MAIN , fpm_env_cleanup , 0 )) {
277
+ return -1 ;
278
+ }
279
+
257
280
if ((new_environ = malloc ((1U + env_nb ) * sizeof (char * ))) == NULL ) {
258
281
return -1 ;
259
282
}
You can’t perform that action at this time.
0 commit comments