* cygheap.cc (cfree_and_set): New function.

(cygheap_user::set_name): Use cfree_and_set to reset members.
* cygheap.h (cygheap_user): Delete static members.
(cygheap_user::puserprof): New member.
(cfree_and_set): Declare.
* dcrt0.cc (almost_null): Define.
* winsup.h (almost_null): Declare.
* syscalls.cc (cfree_and_set): Remove unused variable.
* uinfo.cc (cygheap_user::homepath_env_buf): Eliminate.
(cygheap_user::homedrive_env_buf): Ditto.
(cygheap_user::userprofile_env_buf): Ditto.
(cygheap_user::ontherange): YA change to try to preserve existing HOMEPATH and
HOMEDRIVE.  Return almost_null values when variables should not actually exist.
(cygheap_user::env_logsrv): Ditto.
(cygheap_user::env_domain): Ditto.
(cygheap_user::env_userprofile): Ditto.
This commit is contained in:
Christopher Faylor
2002-06-27 20:44:27 +00:00
parent 54be629f41
commit 179cae11d7
8 changed files with 89 additions and 52 deletions

View File

@@ -327,6 +327,14 @@ cfree (void *s)
MALLOC_CHECK;
}
extern "C" void __stdcall
cfree_and_set (char *&s, char *what)
{
if (s && s != almost_null)
cfree (s);
s = what;
}
extern "C" void *__stdcall
ccalloc (cygheap_types x, DWORD n, DWORD size)
{
@@ -453,15 +461,11 @@ cygheap_user::set_name (const char *new_name)
if (!allocated)
return; /* Initializing. Don't bother with other stuff. */
homedrive = NULL;
homepath = NULL;
if (plogsrv)
cfree (plogsrv);
if (pdomain)
cfree (pdomain);
if (winname)
cfree (winname);
plogsrv = pdomain = winname = NULL;
cfree_and_set (homedrive);
cfree_and_set (homepath);
cfree_and_set (plogsrv);
cfree_and_set (pdomain);
cfree_and_set (winname);
}
BOOL