summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configure.in2
-rw-r--r--dbus/dbus-sysdeps.c14
2 files changed, 14 insertions, 2 deletions
diff --git a/configure.in b/configure.in
index ee0d40ba..34e653f8 100644
--- a/configure.in
+++ b/configure.in
@@ -586,7 +586,7 @@ fi
AC_CHECK_LIB(socket,socket)
AC_CHECK_FUNC(gethostbyname,,[AC_CHECK_LIB(nsl,gethostbyname)])
-AC_CHECK_FUNCS(vsnprintf vasprintf nanosleep usleep poll setenv unsetenv socketpair getgrouplist fpathconf setrlimit)
+AC_CHECK_FUNCS(vsnprintf vasprintf nanosleep usleep poll setenv clearenv unsetenv socketpair getgrouplist fpathconf setrlimit)
AC_MSG_CHECKING(for dirfd)
AC_TRY_LINK([
diff --git a/dbus/dbus-sysdeps.c b/dbus/dbus-sysdeps.c
index c76603a8..1a736e42 100644
--- a/dbus/dbus-sysdeps.c
+++ b/dbus/dbus-sysdeps.c
@@ -185,7 +185,19 @@ _dbus_getenv (const char *varname)
dbus_bool_t
_dbus_clearenv (void)
{
- return (clearenv () == 0);
+ dbus_bool_t rc = TRUE;
+
+#ifdef HAVE_CLEARENV
+ if (clearenv () != 0)
+ rc = FALSE;
+#else
+ extern char **environ;
+
+ if (environ != NULL)
+ environ[0] = NULL;
+#endif
+
+ return rc;
}
/*