This patch replaces the occurrences of data->size by data->index+1 as the index starts with 0 and ends at data->size-1. data->size holds the max size of the records list in data->container_t. data->index holds the index of the last record in the list. Since the records list may not be completely filled, data->index + 1 gives the total number of records currently in the list and it may not be equal to data->size.
Signed-off-by: Kiran Prakash <[email protected]> Acked-by: Gowrishankar <[email protected]> Acked-by: Darren Hart <[email protected]> Acked-by: Sripathi Kodi <[email protected]> diff -upr ltp-full-20090531_orig/testcases/realtime/lib/libstats.c ltp-full-20090531/testcases/realtime/lib/libstats.c --- ltp-full-20090531_orig/testcases/realtime/lib/libstats.c 2009-07-22 21:12:47.000000000 +0530 +++ ltp-full-20090531/testcases/realtime/lib/libstats.c 2009-07-22 21:16:59.000000000 +0530 @@ -105,7 +105,7 @@ int stats_container_free(stats_container int stats_sort(stats_container_t *data, enum stats_sort_method method) { // method not implemented, always ascending on y atm - qsort(data->records, data->size, sizeof(stats_record_t), + qsort(data->records, data->index + 1, sizeof(stats_record_t), stats_record_compare); return 0; } @@ -117,7 +117,7 @@ float stats_stddev(stats_container_t *da long n; sd = 0.0; - n = data->size; + n = data->index + 1; sum = 0.0; /* calculate the mean */ @@ -145,7 +145,7 @@ float stats_avg(stats_container_t *data) float avg, sum; long n; - n = data->size; + n = data->index + 1; sum = 0.0; /* calculate the mean */ @@ -163,7 +163,7 @@ long stats_min(stats_container_t *data) long min; long n; - n = data->size; + n = data->index + 1; /* calculate the mean */ min = data->records[0].y; @@ -182,7 +182,7 @@ long stats_max(stats_container_t *data) long max; long n; - n = data->size; + n = data->index + 1; /* calculate the mean */ max = data->records[0].y; @@ -223,16 +223,17 @@ int stats_quantiles_calc(stats_container int index; // check for sufficient data size of accurate calculation - if (data->size <= 0 || data->size < (long)exp10(quantiles->nines)) { + if (data->index < 0 || (data->index + 1) \ + < (long)exp10(quantiles->nines)) { //printf("ERROR: insufficient data size for %d nines\n", data->size); return -1; } - size = data->size; + size = data->index + 1; stats_sort(data, ASCENDING_ON_Y); for (i = 2; i <= quantiles->nines; i++) { - index = data->size - data->size / exp10(i); + index = size - size / exp10(i); quantiles->quantiles[i-2] = data->records[index].y; } return 0; @@ -259,13 +260,13 @@ int stats_hist(stats_container_t *hist, ret = 0; - if (hist->size <= 0 || data->size <= 0) { + if (hist->size <= 0 || data->index < 0) { return -1; } /* calculate the range of dataset */ min = max = data->records[0].y; - for (i = 0; i < data->size; i++) { + for (i = 0; i <= data->index; i++) { y = data->records[i].y; if (y > max) max = y; if (y < min) min = y; @@ -284,7 +285,7 @@ int stats_hist(stats_container_t *hist, } /* fill in the counts */ - for (i = 0; i < data->size; i++) { + for (i = 0; i <= data->index; i++) { y = data->records[i].y; b = MIN((y-min)/width, hist->size-1); //printf("%d will go in bucket %d\n", y, b); @@ -336,8 +337,8 @@ int stats_container_save(char *filename, return -1; } else { minx = maxx = data->records[0].x; - miny = maxy = data->records[0].y; - for (i = 0; i < data->size; i++) { + miny = maxy = data->records[0].y; + for (i = 0; i <= data->index; i++) { rec = &data->records[i]; minx = MIN(minx, rec->x); maxx = MAX(maxx, rec->x); -- Thanks, Kiran ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list
