diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index c509ceb66..05c2223ad 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,8 @@ +Wed Jul 12 00:01:03 2000 Christopher Faylor + + * lib/_cygwin_crt0_common.cc (_cygwin_crt0_common): Don't reset + environ if already set. + Mon Jul 10 19:07:03 2000 Christopher Faylor * fhandler_console.cc (fhandler_console::read): Unicode interface diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc index 854739ebc..a42e84e1b 100644 --- a/winsup/cygwin/dcrt0.cc +++ b/winsup/cygwin/dcrt0.cc @@ -71,7 +71,7 @@ extern "C" {/* initial_sp */ 0, /* magic_biscuit */ 0, /* dll_major */ CYGWIN_VERSION_DLL_MAJOR, /* dll_major */ CYGWIN_VERSION_DLL_MINOR, - /* impure_ptr_ptr */ NULL, /*envptr */ NULL, + /* impure_ptr_ptr */ NULL, /* envptr */ NULL, /* malloc */ export_malloc, /* free */ export_free, /* realloc */ export_realloc, /* fmode_ptr */ NULL, /* main */ NULL, /* ctors */ NULL, diff --git a/winsup/cygwin/lib/_cygwin_crt0_common.cc b/winsup/cygwin/lib/_cygwin_crt0_common.cc index 4ca6dd74e..fcca1694f 100644 --- a/winsup/cygwin/lib/_cygwin_crt0_common.cc +++ b/winsup/cygwin/lib/_cygwin_crt0_common.cc @@ -56,7 +56,10 @@ _cygwin_crt0_common (MainFunc f, per_process *u) u->ctors = &__CTOR_LIST__; u->dtors = &__DTOR_LIST__; - u->envptr = &environ; + if (!u->envptr) + u->envptr = &environ; + else + environ = *(u->envptr); if (uwasnull) _impure_ptr = u->impure_ptr; /* Use field initialized in newer DLLs. */ else