diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index a395e9aa0..e74d0dfaf 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,9 @@ +2002-06-13 Corinna Vinschen + + * cygheap.cc (cygheap_user::set_name): Revert previous change. + * environ.cc (spenv::retrieve): Check return value of call to + cygheap->user.*from_cygheap(). + 2002-06-13 Corinna Vinschen * cygheap.cc (cygheap_user::set_name): Remove setting homedrive and diff --git a/winsup/cygwin/cygheap.cc b/winsup/cygwin/cygheap.cc index 3fd2aacc9..723fde2ff 100644 --- a/winsup/cygwin/cygheap.cc +++ b/winsup/cygwin/cygheap.cc @@ -443,6 +443,8 @@ cygheap_user::set_name (const char *new_name) if (pname) cfree (pname); pname = cstrdup (new_name ? new_name : ""); + homedrive = NULL; + homepath = NULL; } void diff --git a/winsup/cygwin/environ.cc b/winsup/cygwin/environ.cc index da96b5245..4d535e436 100644 --- a/winsup/cygwin/environ.cc +++ b/winsup/cygwin/environ.cc @@ -786,7 +786,8 @@ spenv::retrieve (bool no_envblock, const char *const envname, int len) /* Make a FOO=BAR entry from the value returned by the cygheap_user method. */ - p = (cygheap->user.*from_cygheap) (); + if (!(p = (cygheap->user.*from_cygheap) ())) + return NULL; int namelen = strlen (name); char *s = (char *) cmalloc (HEAP_1_STR, namelen + strlen (p) + 1); strcpy (s, name);