Explorar el Código

calclib: fix for https://trac.osgeo.org/grass/ticket/3296

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@70683 15284696-431f-4ddb-bdfa-cd5b030d7da7
Markus Metz hace 8 años
padre
commit
64b7f3cb51
Se han modificado 1 ficheros con 12 adiciones y 12 borrados
  1. 12 12
      lib/calc/xnmedian.c

+ 12 - 12
lib/calc/xnmedian.c

@@ -68,8 +68,8 @@ int f_nmedian(int argc, const int *argt, void **args)
 	    CELL *res = args[0];
 	    CELL **argv = (CELL **) &args[1];
 	    CELL *a = array;
-	    CELL *a1 = &a[(argc - 1) / 2];
-	    CELL *a2 = &a[argc / 2];
+	    CELL *a1;
+	    CELL *a2;
 
 	    for (i = 0; i < columns; i++) {
 		int n = 0;
@@ -82,10 +82,10 @@ int f_nmedian(int argc, const int *argt, void **args)
 
 		if (!n)
 		    SET_NULL_C(&res[i]);
-                else if (n == 1)
-                    res[i] = *a1;
 		else {
 		    qsort(a, n, sizeof(CELL), icmp);
+		    a1 = &a[(n - 1) / 2];
+		    a2 = &a[n / 2];
 		    res[i] = (*a1 + *a2) / 2;
 		}
 	    }
@@ -97,8 +97,8 @@ int f_nmedian(int argc, const int *argt, void **args)
 	    FCELL *res = args[0];
 	    FCELL **argv = (FCELL **) &args[1];
 	    FCELL *a = array;
-	    FCELL *a1 = &a[(argc - 1) / 2];
-	    FCELL *a2 = &a[argc / 2];
+	    FCELL *a1;
+	    FCELL *a2;
 
 	    for (i = 0; i < columns; i++) {
 		int n = 0;
@@ -111,10 +111,10 @@ int f_nmedian(int argc, const int *argt, void **args)
 
 		if (!n)
 		    SET_NULL_F(&res[i]);
-                else if (n == 1)
-                    res[i] = *a1;
 		else {
 		    qsort(a, n, sizeof(FCELL), fcmp);
+		    a1 = &a[(n - 1) / 2];
+		    a2 = &a[n / 2];
 		    res[i] = (*a1 + *a2) / 2;
 		}
 	    }
@@ -126,8 +126,8 @@ int f_nmedian(int argc, const int *argt, void **args)
 	    DCELL *res = args[0];
 	    DCELL **argv = (DCELL **) &args[1];
 	    DCELL *a = array;
-	    DCELL *a1 = &a[(argc - 1) / 2];
-	    DCELL *a2 = &a[argc / 2];
+	    DCELL *a1;
+	    DCELL *a2;
 
 	    for (i = 0; i < columns; i++) {
 		int n = 0;
@@ -140,10 +140,10 @@ int f_nmedian(int argc, const int *argt, void **args)
 
 		if (!n)
 		    SET_NULL_D(&res[i]);
-                else if (n == 1)
-                    res[i] = *a1;
 		else {
 		    qsort(a, n, sizeof(DCELL), dcmp);
+		    a1 = &a[(n - 1) / 2];
+		    a2 = &a[n / 2];
 		    res[i] = (*a1 + *a2) / 2;
 		}
 	    }