[GRASS-SVN] r54831 - grass/trunk/lib/stats
svn_grass at osgeo.org
svn_grass at osgeo.org
Fri Feb 1 10:46:04 PST 2013
Author: mmetz
Date: 2013-02-01 10:46:04 -0800 (Fri, 01 Feb 2013)
New Revision: 54831
Modified:
grass/trunk/lib/stats/sort_cell.c
Log:
statslib: do not qsort NULL values
Modified: grass/trunk/lib/stats/sort_cell.c
===================================================================
--- grass/trunk/lib/stats/sort_cell.c 2013-02-01 16:10:11 UTC (rev 54830)
+++ grass/trunk/lib/stats/sort_cell.c 2013-02-01 18:46:04 UTC (rev 54831)
@@ -8,6 +8,11 @@
{
const DCELL *a = aa, *b = bb;
+ if (*a < *b)
+ return -1;
+ return (*a > *b);
+
+
if (Rast_is_d_null_value((DCELL *) a) && Rast_is_d_null_value((DCELL *) b))
return 0;
@@ -22,26 +27,40 @@
int sort_cell(DCELL * array, int n)
{
- int i;
+ int i, j;
- qsort(array, n, sizeof(DCELL), ascending);
+ j = 0;
+ for (i = 0; i < n; i++) {
+ if (!Rast_is_d_null_value(&array[i])) {
+ array[j] = array[i];
+ j++;
+ }
+ }
+ n = j;
- for (i = 0; i < n; i++)
- if (Rast_is_d_null_value(&array[i]))
- break;
+ if (n > 0)
+ qsort(array, n, sizeof(DCELL), ascending);
- return i;
+ return n;
}
int sort_cell_w(DCELL(*array)[2], int n)
{
- int i;
+ int i, j;
- qsort(array, n, 2 * sizeof(DCELL), ascending);
+ j = 0;
+ for (i = 0; i < n; i++) {
+ if (!Rast_is_d_null_value(&array[i][0]) &&
+ !Rast_is_d_null_value(&array[i][1])) {
+ array[j][0] = array[i][0];
+ array[j][1] = array[i][1];
+ j++;
+ }
+ }
+ n = j;
- for (i = 0; i < n; i++)
- if (Rast_is_d_null_value(&array[i][0]))
- break;
+ if (n > 0)
+ qsort(array, n, 2 * sizeof(DCELL), ascending);
- return i;
+ return n;
}
More information about the grass-commit
mailing list