diff options
author | kcwu <kcwu@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2005-02-25 02:56:28 +0800 |
---|---|---|
committer | kcwu <kcwu@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2005-02-25 02:56:28 +0800 |
commit | 4c93dcf3d3467422215b0313a89ca34c60122e03 (patch) | |
tree | e9acf90e6bfe70ca221b423eead81147aa88f0fb /mbbsd | |
parent | 9a5cafe88021647eb5eda706c64d3725bb7c43d1 (diff) | |
download | pttbbs-4c93dcf3d3467422215b0313a89ca34c60122e03.tar pttbbs-4c93dcf3d3467422215b0313a89ca34c60122e03.tar.gz pttbbs-4c93dcf3d3467422215b0313a89ca34c60122e03.tar.bz2 pttbbs-4c93dcf3d3467422215b0313a89ca34c60122e03.tar.lz pttbbs-4c93dcf3d3467422215b0313a89ca34c60122e03.tar.xz pttbbs-4c93dcf3d3467422215b0313a89ca34c60122e03.tar.zst pttbbs-4c93dcf3d3467422215b0313a89ca34c60122e03.zip |
use only single malloc in initsetproctitle()
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@2538 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'mbbsd')
-rw-r--r-- | mbbsd/args.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/mbbsd/args.c b/mbbsd/args.c index 32156517..8d6ee98d 100644 --- a/mbbsd/args.c +++ b/mbbsd/args.c @@ -18,15 +18,23 @@ void initsetproctitle(int argc, char **argv, char **envp) { register int i; + int len=0,nenv=0; /* * Move the environment so setproctitle can use the space at the top of * memory. */ - for (i = 0; envp[i]; i++); - environ = malloc(sizeof(char *) * (i + 1)); for (i = 0; envp[i]; i++) - environ[i] = strdup(envp[i]); + len+=strlen(envp[i])+1; + nenv=i+1; + len+=sizeof(char*)*nenv; + environ = malloc(len); + len=0; + for (i = 0; envp[i]; i++) { + environ[i] = (char*)environ+nenv*sizeof(char*)+len; + strcpy(environ[i], envp[i]); + len+=strlen(envp[i])+1; + } environ[i] = NULL; /* Save start and extent of argv for setproctitle. */ |