Mail Archives: cygwin/2002/08/12/17:14:17
> From: Hans Werner Strube [mailto:strube AT physik3 DOT gwdg DOT de]
>
> Cygwin version: 1.3.12-2.
> Function putenv() obviously stores only the address of the argument
> string, not its contents. Thus it works reliably only for
> static, unchanged
> argument strings. Consider the command sequence
> char env[256];
> strcpy(env,"EINS=one");
> putenv(env);
> strcpy(env,"ZWEI=two");
> /* putenv(env);*/
> With or without the last putenv(), only the environment ZWEI=two
> exists now, the first one has been overwritten.
This is correct behaviour according to the Single Unix Standard:
http://www.opengroup.org/onlinepubs/007904975/functions/putenv.html
> Workaround: #define putenv(x) putenv(strdup(x))
Does the phrase "memory leak" suggest anything to you? :-)
--
Ross Smith ...................... Pharos Systems, Auckland, New Zealand
"C++ is to programming as sex is to reproduction. Better ways might
technically exist but they're not nearly as much fun." - Nikolai Irgens
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Bug reporting: http://cygwin.com/bugs.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -