Fix bug in autorecode - strings vs. /group
[pspp-builds.git] / src / language / stats / autorecode.c
index a18a94c6bd5fa5514a7fb69e43ac5a58e4f1697c..2a72aaea82ecd266a1e6a81bbd5857fdecd52e54 100644 (file)
@@ -248,7 +248,7 @@ cmd_autorecode (struct lexer *lexer, struct dataset *ds)
             the source value from whence the new value comes. */
          if (src_width > 0)
            {
-             const char *str = (const char *) value_str (from, src_width);
+             const char *str = CHAR_CAST_BUG (const char*, value_str (from, src_width));
 
              recoded_value = recode_string (UTF8, dict_get_encoding (dict), str, src_width);
            }
@@ -294,13 +294,12 @@ arc_free (struct autorecode_pgm *arc)
       for (i = 0; i < arc->n_specs; i++)
         {
           struct arc_spec *spec = &arc->specs[i];
-          int width = var_get_width (spec->src);
           struct arc_item *item, *next;
 
          HMAP_FOR_EACH_SAFE (item, next, struct arc_item, hmap_node,
                              spec->items)
            {
-             value_destroy (&item->from, width);
+             value_destroy (&item->from, item->width);
              hmap_delete (spec->items, &item->hmap_node);
              free (item);
            }
@@ -357,8 +356,8 @@ compare_arc_items (const void *a_, const void *b_, const void *aux UNUSED)
   if ( width_b == 0 && width_a != 0)
     return +1;
 
-  return buf_compare_rpad ((const char *) value_str (&(*a)->from, width_a), width_a,
-                          (const char *) value_str (&(*b)->from, width_b), width_b);
+  return buf_compare_rpad (CHAR_CAST_BUG (const char *, value_str (&(*a)->from, width_a)), width_a,
+                          CHAR_CAST_BUG (const char *, value_str (&(*b)->from, width_b)), width_b);
 }
 
 static int