Environment handling broken in /bin/sh with changes to {get,set,put}env()

Andrey Chernov ache at nagual.pp.ru
Sat Jul 7 13:14:01 UTC 2007


On Sat, Jul 07, 2007 at 05:09:00PM +0400, Andrey Chernov wrote:
> Well, I see. You try to keep envVars[] between environ switch by that way. 
> 
> But it still look complicated and probably gains nothing. I.e. will be 
> much _faster_ just free envVars[] (but not variables themselfs) and allow 
> build_env() to calloc() new array for envVars and fills it from new 
> environ. It is surely faster than calling setenv() for each variable just 
> for sake of keepeng once allocated envVars[].
> 
> Moreover, environ switch commonly used to switch from large environ to 
> smaller one (or to empty one), so the rest of old envVars[] array would 
> keep unneccessary allocation.

BTW, if you just free(envVars) when environ switch is detected, there is 
no needs to __remove_putenv() (big slowdown) in the __clean_env() too.

-- 
http://ache.pp.ru/


More information about the freebsd-current mailing list