summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--winsup/cygwin/ChangeLog8
-rw-r--r--winsup/cygwin/cygheap.cc4
-rw-r--r--winsup/cygwin/cygheap.h3
3 files changed, 13 insertions, 2 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 5afa9dafd..73e0f392a 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,11 @@
+2007-07-18 Corinna Vinschen <corinna@vinschen.de>
+
+ * cygheap.h (shared_prefix): De-const.
+ (shared_prefix_buf): Add static buffer for shared prefix to avoid
+ additional allocation.
+ * cygheap.cc (cygheap_init): Set cygheap->shared_prefix to
+ cygheap->shared_prefix_buf and strcpy.
+
2007-07-17 Corinna Vinschen <corinna@vinschen.de>
* fhandler.cc (fhandler_base::fhaccess): Add check for R/O file system.
diff --git a/winsup/cygwin/cygheap.cc b/winsup/cygwin/cygheap.cc
index 2c937fc7c..3b4b72ba7 100644
--- a/winsup/cygwin/cygheap.cc
+++ b/winsup/cygwin/cygheap.cc
@@ -163,8 +163,10 @@ cygheap_init ()
if (!cygheap->sigs)
sigalloc ();
+ /* Should this ever change, keep in mind that shared_prefix_buf is exactly
+ 8 bytes long, just enough to match the size of the "Global\\" string. */
if (!cygheap->shared_prefix)
- cygheap->shared_prefix = cstrdup (
+ strcpy (cygheap->shared_prefix = cygheap->shared_prefix_buf,
wincap.has_terminal_services () ? "Global\\" : "");
}
diff --git a/winsup/cygwin/cygheap.h b/winsup/cygwin/cygheap.h
index 937230554..3ac43ba2d 100644
--- a/winsup/cygwin/cygheap.h
+++ b/winsup/cygwin/cygheap.h
@@ -279,7 +279,8 @@ struct init_cygheap
cwdstuff cwd;
dtable fdtab;
LUID luid[SE_NUM_PRIVS];
- const char *shared_prefix;
+ char *shared_prefix;
+ char shared_prefix_buf[8];
#ifdef DEBUGGING
cygheap_debug debug;
#endif