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:
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