Mercurial > dovecot > original-hg > dovecot-1.2
changeset 7806:5ae1c7c4edcf HEAD
env_clean(): Try yet another way that appears to work better.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 10 Jun 2008 07:27:19 +0300 |
parents | d440b7cad709 |
children | 8704bd29617b |
files | src/lib/env-util.c |
diffstat | 1 files changed, 7 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib/env-util.c Mon Jun 09 22:02:02 2008 +0300 +++ b/src/lib/env-util.c Tue Jun 10 07:27:19 2008 +0300 @@ -24,13 +24,15 @@ i_fatal("clearenv() failed"); #else extern char **environ; + static char *emptyenv[1] = { NULL }; - /* Try to clear the environment. It should always be non-NULL, but - apparently it's not on some ancient OSes (Ultrix), so just keep - the check. The clearing also fails on FreeBSD 7.0 (currently). */ - if (environ != NULL) - *environ = NULL; + /* Try to clear the environment. + a) environ = NULL crashes on OS X. + b) *environ = NULL doesn't work on FreeBSD 7.0. + c) environ = emptyenv appears to work everywhere. + */ + environ = emptyenv; #endif /* don't clear the env_pool, otherwise the environment would get corrupted if we failed to clear it. */