--- projects/cms/source/ihost/libstatgrab/disk_stat.c 2002/05/13 12:47:15 1.4 +++ projects/cms/source/ihost/libstatgrab/disk_stat.c 2002/05/13 13:21:36 1.5 @@ -37,6 +37,7 @@ char *get_disk_stats(){ system_disks_t *sd_ptr=sd; int counter=0; char *xml_disk_stats; + char *xml_disk_stats_ptr; #ifdef SOLARIS struct mnttab mp; struct statvfs df; @@ -169,15 +170,28 @@ char *get_disk_stats(){ xml_disk_stats=strdup(""); while(sd_ptr!=NULL){ + xml_disk_stats_ptr=xml_disk_stats; if((xml_disk_stats=strf("%s", xml_disk_stats, counter, sd_ptr->disk->device_name, sd_ptr->disk->mnt_point, sd_ptr->disk->size, sd_ptr->disk->used, sd_ptr->disk->avail, sd_ptr->disk->t_inodes, sd_ptr->disk->f_inodes, counter)) == NULL){ errf("strf failed (%m)"); return NULL; } + free(xml_disk_stats_ptr); sd_ptr=sd_ptr->next_disk; counter++; } xml_disk_stats=strf("%s",xml_disk_stats); + + /* Cleaning up */ + sd_ptr=sd; + while(sd_ptr!=NULL){ + sd=sd_ptr->next_disk; + free(sd_ptr->disk->device_name); + free(sd_ptr->disk->mnt_point); + free(sd_ptr->disk); + free(sd_ptr); + sd_ptr=sd; + } return xml_disk_stats; }