Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2002-06-28 00:44:27 +0400
committerChristopher Faylor <me@cgf.cx>2002-06-28 00:44:27 +0400
commit179cae11d7cf4415e1edb906d90105b2921f666d (patch)
treecd9f7f4c43586086755f4661fd8d21568509cf11 /winsup/cygwin/cygheap.cc
parent54be629f41ad4c5e46a736cf988535a794c664bd (diff)
* 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.
Diffstat (limited to 'winsup/cygwin/cygheap.cc')
-rw-r--r--winsup/cygwin/cygheap.cc22
1 files changed, 13 insertions, 9 deletions
diff --git a/winsup/cygwin/cygheap.cc b/winsup/cygwin/cygheap.cc
index 561e9330f..2cf7e2068 100644
--- a/winsup/cygwin/cygheap.cc
+++ b/winsup/cygwin/cygheap.cc
@@ -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