Fix compiler warnings
[pspp] / src / math / categoricals.c
index 5c96c40cc359a1ec87f00594890eb00cfe75c577..5aba65b78e92d35499a886064edb12e1b81ce39d 100644 (file)
@@ -91,14 +91,18 @@ void
 categoricals_destroy ( struct categoricals *cat)
 {
   int i;
-  for (i = 0 ; i < cat->n_vp; ++i)
-    hmap_destroy (&cat->vp[i].map);
-
-  pool_destroy (cat->pool);
-  free (cat);
+  if (cat != NULL)
+    {
+      for (i = 0 ; i < cat->n_vp; ++i)
+       hmap_destroy (&cat->vp[i].map);
+      
+      pool_destroy (cat->pool);
+      free (cat);
+    }
 }
 
 
+#if 0
 void
 categoricals_dump (const struct categoricals *cat)
 {
@@ -129,8 +133,8 @@ categoricals_dump (const struct categoricals *cat)
       for (node = hmap_first (m); node; node = hmap_next (m, node))
        {
          struct string s;
-         ds_init_empty (&s);
          const struct value_node *vn = HMAP_DATA (node, struct value_node, node);
+         ds_init_empty (&s);
          var_append_value_name (vp->var, &vn->value, &s);
          printf ("Value: %s; Index %d; CC %g\n",
                  ds_cstr (&s),
@@ -152,6 +156,7 @@ categoricals_dump (const struct categoricals *cat)
     printf ("%d ", cat->reverse_variable_map[v]);
   printf ("\n");
 }
+#endif
 
 
 
@@ -309,26 +314,31 @@ categoricals_done (struct categoricals *cat)
 }
 
 
+static int
+reverse_variable_lookup (const struct categoricals *cat, int subscript)
+{
+  assert (cat->reverse_variable_map);
+  assert (subscript >= 0);
+  assert (subscript < cat->n_cats_total - cat->n_vars);
+
+  return cat->reverse_variable_map[subscript];
+}
+
 
 /* Return the categorical variable corresponding to SUBSCRIPT */
 const struct variable *
 categoricals_get_variable_by_subscript (const struct categoricals *cat, int subscript)
 {
-  int index;
-
-  assert (cat->reverse_variable_map);
-  
-  index = cat->reverse_variable_map[subscript];
+  int index = reverse_variable_lookup (cat, subscript);
 
   return cat->vp[index].var;
 }
 
-
 /* Return the value corresponding to SUBSCRIPT */
 const union value *
 categoricals_get_value_by_subscript (const struct categoricals *cat, int subscript)
 {
-  int vindex = cat->reverse_variable_map[subscript];
+  int vindex = reverse_variable_lookup (cat, subscript);
   const struct var_params *vp = &cat->vp[vindex];
   const struct value_node *vn = vp->reverse_value_map [subscript - vp->base_subscript];
 
@@ -339,7 +349,7 @@ categoricals_get_value_by_subscript (const struct categoricals *cat, int subscri
 double
 categoricals_get_weight_by_subscript (const struct categoricals *cat, int subscript)
 {
-  int vindex = cat->reverse_variable_map[subscript];
+  int vindex = reverse_variable_lookup (cat, subscript);
   const struct var_params *vp = &cat->vp[vindex];
 
   return vp->cc;
@@ -348,7 +358,7 @@ categoricals_get_weight_by_subscript (const struct categoricals *cat, int subscr
 double
 categoricals_get_sum_by_subscript (const struct categoricals *cat, int subscript)
 {
-  int vindex = cat->reverse_variable_map[subscript];
+  int vindex = reverse_variable_lookup (cat, subscript);
   const struct var_params *vp = &cat->vp[vindex];
 
   const struct value_node *vn = vp->reverse_value_map [subscript - vp->base_subscript];