diff options
| author | Brian Somers <brian@FreeBSD.org> | 2000-09-20 03:05:37 +0000 | 
|---|---|---|
| committer | Brian Somers <brian@FreeBSD.org> | 2000-09-20 03:05:37 +0000 | 
| commit | b1daa1b9db90baacab8a5d04ba07d2405e25f6a8 (patch) | |
| tree | 79f26a259b9560e39174a9367d0ebc77d1e54efe /lib/libc/stdlib/setenv.c | |
| parent | d9e2f78b50e0ff85250df6e930b61a47fd28968b (diff) | |
Notes
Diffstat (limited to 'lib/libc/stdlib/setenv.c')
| -rw-r--r-- | lib/libc/stdlib/setenv.c | 9 | 
1 files changed, 4 insertions, 5 deletions
| diff --git a/lib/libc/stdlib/setenv.c b/lib/libc/stdlib/setenv.c index 96f22a3e6ce5..cd82c0d87074 100644 --- a/lib/libc/stdlib/setenv.c +++ b/lib/libc/stdlib/setenv.c @@ -56,7 +56,7 @@ setenv(name, value, rewrite)  	int rewrite;  {  	extern char **environ; -	static int alloced;			/* if allocated space before */ +	static char **alloced;			/* if allocated space before */  	register char *c;  	int l_value, offset; @@ -75,21 +75,20 @@ setenv(name, value, rewrite)  		register char **p;  		for (p = environ, cnt = 0; *p; ++p, ++cnt); -		if (alloced) {			/* just increase size */ +		if (alloced == environ) {			/* just increase size */  			p = (char **)realloc((char *)environ,  			    (size_t)(sizeof(char *) * (cnt + 2)));  			if (!p)  				return (-1); -			environ = p; +			alloced = environ = p;  		}  		else {				/* get new space */  						/* copy old entries into it */  			p = malloc((size_t)(sizeof(char *) * (cnt + 2)));  			if (!p)  				return (-1); -			alloced = 1;  			bcopy(environ, p, cnt * sizeof(char *)); -			environ = p; +			alloced = environ = p;  		}  		environ[cnt + 1] = NULL;  		offset = cnt; | 
