* 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:
@@ -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
|
||||
|
Reference in New Issue
Block a user