diff options
Diffstat (limited to 'common/cmd_nvedit.c')
| -rw-r--r-- | common/cmd_nvedit.c | 18 | 
1 files changed, 12 insertions, 6 deletions
diff --git a/common/cmd_nvedit.c b/common/cmd_nvedit.c index 16d5ff74d..fd5320d17 100644 --- a/common/cmd_nvedit.c +++ b/common/cmd_nvedit.c @@ -557,13 +557,19 @@ int getenv_f(char *name, char *buf, unsigned len)  		}  		if ((val=envmatch((uchar *)name, i)) < 0)  			continue; +  		/* found; copy out */ -		n = 0; -		while ((len > n++) && (*buf++ = env_get_char(val++)) != '\0') -			; -		if (len == n) -			*buf = '\0'; -		return (n); +		for (n=0; n<len; ++n, ++buf) { +			if ((*buf = env_get_char(val++)) == '\0') +				return n; +		} + +		if (n) +			*--buf = '\0'; + +		printf("env_buf too small [%d]\n", len); + +		return n;  	}  	return (-1);  }  |