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
path: root/winsup
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2002-06-14 18:08:07 +0400
committerCorinna Vinschen <corinna@vinschen.de>2002-06-14 18:08:07 +0400
commit470e8c460d8ef8cd60d2d528498e8b07bbcda6dc (patch)
tree5e0a0cd9c044e42fff3e994105554bfacc70366f /winsup
parentced1e577b77b5bf0abab7fdcce453fdf0fb249ce (diff)
* environ.cc (build_env): If realloc moves envblock, move s with it.
Diffstat (limited to 'winsup')
-rw-r--r--winsup/cygwin/ChangeLog4
-rw-r--r--winsup/cygwin/environ.cc11
2 files changed, 14 insertions, 1 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index fcf4325e1..8f54b1a73 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,7 @@
+2002-06-14 Corinna Vinschen <corinna@vinschen.de>
+
+ * environ.cc (build_env): If realloc moves envblock, move s with it.
+
2002-06-13 Nicholas S. Wourms <nwourms@netscape.net>
* winver.rc: Add more words to copyright.
diff --git a/winsup/cygwin/environ.cc b/winsup/cygwin/environ.cc
index 4d535e436..962dc42f9 100644
--- a/winsup/cygwin/environ.cc
+++ b/winsup/cygwin/environ.cc
@@ -910,7 +910,16 @@ build_env (const char * const *envp, char *&envblock, int &envc,
/* See if we need to increase the size of the block. */
if (new_tl > tl)
- envblock = (char *) realloc (envblock, 2 + (tl += len + 100));
+ {
+ char *new_envblock =
+ (char *) realloc (envblock, 2 + (tl += len + 100));
+ /* If realloc moves the block, move `s' with it. */
+ if (new_envblock != envblock)
+ {
+ s += new_envblock - envblock;
+ envblock = new_envblock;
+ }
+ }
memcpy (s, p, len + 1);