[Patch] Make getenv() functional before the environment is initialized
Pierre A. Humblet
pierre@phumblet.no-ip.org
Fri Apr 21 20:33:00 GMT 2006
----- Original Message -----
From: "Christopher Faylor" <cgf-no-personal-reply-please@cygwin.com>
To: <cygwin-patches@cygwin.com>
Sent: Friday, April 21, 2006 4:12 PM
Subject: Re: [Patch] Make getenv() functional before the environment is
initialized
>>
>>But doesn't the program then have a pointer to memory that has been freed?
>>That pointer can also be accessed after forks.
>
> Isn't that always a possibility? You can't rely on the persistence of
> the stuff returned from getenv().
That's not my reading of
http://www.opengroup.org/onlinepubs/000095399/functions/getenv.html
"The string pointed to may be overwritten by a subsequent call to getenv(),
but shall not be overwritten by a call to any other function in this volume of
IEEE Std 1003.1-2001."
Athough Posix allows the string to be overwritten, indicating that persistence
is implied,
it does not allow the pointer to become invalid.
See also
http://developer.apple.com/documentation/Darwin/Reference/Manpages/man3/getenv.3.html
which says that the environment semantics make it inherently leaky.
That's why I didn't hesitate calling cmalloc
Pierre
More information about the Cygwin-patches
mailing list