sort orders
[pspp] / src / language / stats / ctables.c
index 461007c555db92673236ba5beb192d59862ee2e2..13fe3b467b14e1b42c23c75e773f08f1754e460a 100644 (file)
@@ -3354,10 +3354,19 @@ ctables_cell_compare_3way (const void *a_, const void *b_, const void *aux_)
             {
               const char *a_label = var_lookup_value_label (var, a_val);
               const char *b_label = var_lookup_value_label (var, b_val);
-              int cmp = (a_label
-                         ? (b_label ? strcmp (a_label, b_label) : 1)
-                         : (b_label ? -1 : value_compare_3way (
-                              a_val, b_val, var_get_width (var))));
+              int cmp;
+              if (a_label)
+                {
+                  if (!b_label)
+                    return -1;
+                  cmp = strcmp (a_label, b_label);
+                }
+              else
+                {
+                  if (b_label)
+                    return 1;
+                  cmp = value_compare_3way (a_val, b_val, var_get_width (var));
+                }
               if (cmp)
                 return a_cv->category->sort_ascending ? cmp : -cmp;
             }