--- projects/libstatgrab/src/libstatgrab/process_stats.c 2004/04/05 01:44:20 1.49 +++ projects/libstatgrab/src/libstatgrab/process_stats.c 2004/04/05 09:33:38 1.50 @@ -18,7 +18,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA * 02111-1307 USA * - * $Id: process_stats.c,v 1.49 2004/04/05 01:44:20 ats Exp $ + * $Id: process_stats.c,v 1.50 2004/04/05 09:33:38 tdb Exp $ */ #ifdef HAVE_CONFIG_H @@ -93,9 +93,8 @@ int get_proc_snapshot(proc_state_t **ps){ char *proctitle; #if (defined(FREEBSD) && !defined(FREEBSD5)) || defined(DFBSD) kvm_t *kvmd; - char **args; - int alloc; - char *proctitletmp; + char **args, **argsp; + int argslen = 0; #else long buflen; char *p; @@ -344,24 +343,19 @@ int get_proc_snapshot(proc_state_t **ps){ if(kvmd != NULL) { args = kvm_getargv(kvmd, &(kp_stats[i]), 0); if(args != NULL) { - alloc = 1; - proctitle = malloc(alloc); + argsp = args; + while(*argsp != NULL) { + argslen += strlen(*args); + args++; + } + proctitle = malloc(argslen + 1); + proctitle[0] = '\0'; if(proctitle == NULL) { return -1; } - proctitle[0] = '\0'; while(*args != NULL) { - if(strlen(proctitle) + strlen(*args) >= alloc) { - alloc = (alloc + strlen(*args)) * 2; - proctitletmp = realloc(proctitle, alloc); - if(proctitletmp == NULL) { - free(proctitle); - return -1; - } - proctitle = proctitletmp; - } - strlcat(proctitle, *args, alloc); - strlcat(proctitle, " ", alloc); + strlcat(proctitle, *args, argslen); + strlcat(proctitle, " ", argslen); args++; } /* remove trailing space */