diff options
-rw-r--r-- | winsup/cygwin/ChangeLog | 10 | ||||
-rw-r--r-- | winsup/cygwin/environ.cc | 5 |
2 files changed, 15 insertions, 0 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 08e0781..761df45 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,5 +1,15 @@ 2005-09-16 Christopher Faylor <cgf@timesys.com> + * environ.cc (environ_init): Protect with a 'myfault' in case + GetEnvironmentStrings misbehaves. + +2005-09-16 Christopher Faylor <cgf@timesys.com> + + * environ.cc (environ_init): Add debugging output with value returned + from GetEnvironmentStrings. + +2005-09-16 Christopher Faylor <cgf@timesys.com> + * environ.cc (environ_init): Issue an error if GetEnvironmentStrings fails and return. diff --git a/winsup/cygwin/environ.cc b/winsup/cygwin/environ.cc index 4029cd6..45e1ca7 100644 --- a/winsup/cygwin/environ.cc +++ b/winsup/cygwin/environ.cc @@ -706,6 +706,10 @@ environ_init (char **envp, int envc) bool envp_passed_in; bool got_something_from_registry; static char NO_COPY cygterm[] = "TERM=cygwin"; + myfault efault; + + if (efault.faulted ()) + api_fatal ("internal error reading the windows environment - too many environment variables?"); static int initted; if (!initted) @@ -759,6 +763,7 @@ environ_init (char **envp, int envc) system_printf ("GetEnvironmentStrings returned NULL, %E"); return; } + debug_printf ("GetEnvironmentStrings returned %p - \"%s\"", rawenv, rawenv); /* Current directory information is recorded as variables of the form "=X:=X:\foo\bar; these must be changed into something legal |