ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/libstatgrab/src/libstatgrab/process_stats.c
(Generate patch)

Comparing projects/libstatgrab/src/libstatgrab/process_stats.c (file contents):
Revision 1.49 by ats, Mon Apr 5 01:44:20 2004 UTC vs.
Revision 1.50 by tdb, Mon Apr 5 09:33:38 2004 UTC

# Line 93 | Line 93 | int get_proc_snapshot(proc_state_t **ps){
93          char *proctitle;
94   #if (defined(FREEBSD) && !defined(FREEBSD5)) || defined(DFBSD)
95          kvm_t *kvmd;
96 <        char **args;
97 <        int alloc;
98 <        char *proctitletmp;
96 >        char **args, **argsp;
97 >        int argslen = 0;
98   #else
99          long buflen;
100          char *p;
# Line 344 | Line 343 | int get_proc_snapshot(proc_state_t **ps){
343                  if(kvmd != NULL) {
344                          args = kvm_getargv(kvmd, &(kp_stats[i]), 0);
345                          if(args != NULL) {
346 <                                alloc = 1;
347 <                                proctitle = malloc(alloc);
346 >                                argsp = args;
347 >                                while(*argsp != NULL) {
348 >                                        argslen += strlen(*args);
349 >                                        args++;
350 >                                }
351 >                                proctitle = malloc(argslen + 1);
352 >                                proctitle[0] = '\0';
353                                  if(proctitle == NULL) {
354                                          return -1;
355                                  }
352                                proctitle[0] = '\0';
356                                  while(*args != NULL) {
357 <                                        if(strlen(proctitle) + strlen(*args) >= alloc) {
358 <                                                alloc = (alloc + strlen(*args)) * 2;
356 <                                                proctitletmp = realloc(proctitle, alloc);
357 <                                                if(proctitletmp == NULL) {
358 <                                                        free(proctitle);
359 <                                                        return -1;
360 <                                                }
361 <                                                proctitle = proctitletmp;
362 <                                        }
363 <                                        strlcat(proctitle, *args, alloc);
364 <                                        strlcat(proctitle, " ", alloc);
357 >                                        strlcat(proctitle, *args, argslen);
358 >                                        strlcat(proctitle, " ", argslen);
359                                          args++;
360                                  }
361                                  /* remove trailing space */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines