Fri Dec 19 16:23:45 2003 Ben Pfaff <blp@gnu.org>
authorBen Pfaff <blp@gnu.org>
Sat, 20 Dec 2003 00:28:58 +0000 (00:28 +0000)
committerBen Pfaff <blp@gnu.org>
Sat, 20 Dec 2003 00:28:58 +0000 (00:28 +0000)
* matrix-data.c (compare_variables_by_mxd_vartype): Rewrite.

src/ChangeLog
src/matrix-data.c

index c6e600181c6d69da88e1c989b44f3080f57ed557..f00fddfdeb6986734b938adf935d15d09b526ab4 100644 (file)
@@ -1,3 +1,7 @@
+Fri Dec 19 16:23:45 2003  Ben Pfaff  <blp@gnu.org>
+
+       * matrix-data.c (compare_variables_by_mxd_vartype): Rewrite.
+
 Fri Dec 19 15:54:45 2003  Ben Pfaff  <blp@gnu.org>
 
        * expr-prs.c: (cmp_func) Removed.
index 538074d0f0b568d35bcd77abf9981b1952f3920c..b2adcd4a8f594fb18cc3bedf6a43d1ac3455ffe9 100644 (file)
@@ -680,14 +680,17 @@ string_to_content_type (char *s, int *collide)
 /* Compare two variables using p.mxd.vartype and p.mxd.subtype
    fields. */
 static int
-compare_variables_by_mxd_vartype (const void *pa, const void *pb)
+compare_variables_by_mxd_vartype (const void *a_, const void *b_)
 {
-  struct matrix_data_proc *a = &(*((struct variable **) pa))->p.mxd;
-  struct matrix_data_proc *b = &(*((struct variable **) pb))->p.mxd;
-  
-  return (a->vartype != b->vartype
-         ? a->vartype - b->vartype
-         : a->subtype - b->subtype);
+  struct variable *const *pa = a_;
+  struct variable *const *pb = b_;
+  const struct matrix_data_proc *a = &(*pa)->p.mxd;
+  const struct matrix_data_proc *b = &(*pb)->p.mxd;
+
+  if (a->vartype != b->vartype)
+    return a->vartype > b->vartype ? 1 : -1;
+  else
+    return a->subtype < b->subtype ? -1 : a->subtype > b->subtype;
 }
 
 #if DEBUGGING