gui: added help in recode.ui subdialog
[pspp] / src / language / stats / flip.c
index 9d3b0a6346cb460484e64286f840647eddef154d..e39e85fd5fe490aa5da7f9797c58d1c67552c93e 100644 (file)
@@ -231,7 +231,7 @@ cmd_flip (struct lexer *lexer, struct dataset *ds)
   return CMD_SUCCESS;
 
  error:
-  dict_destroy (new_dict);
+  dict_unref (new_dict);
   destroy_flip_pgm (flip);
   return CMD_CASCADING_FAILURE;
 }
@@ -271,9 +271,15 @@ make_new_var (struct dictionary *dict, const char *name_)
       }
   *cp = '\0';
 
+  if (strlen (name) == 0)
+    {
+      free (name);
+      name = xstrdup ("v");
+    }
+
   /* Use the mangled name, if it is available, or add numeric
      extensions until we find one that is. */
-  if (!dict_create_var (dict, name, 0))
+  if (!id_is_plausible (name, false) || !dict_create_var (dict, name, 0))
     {
       int len = strlen (name);
       int i;
@@ -284,7 +290,7 @@ make_new_var (struct dictionary *dict, const char *name_)
           strncpy (n, name, ofs);
           sprintf (&n[ofs], "%d", i);
 
-          if (dict_create_var (dict, n, 0))
+          if (id_is_plausible (n, false) && dict_create_var (dict, n, 0))
             break;
         }
     }
@@ -343,7 +349,7 @@ flip_file (struct flip_pgm *flip)
       return false;
     }
 
-  for (case_idx = 0; case_idx < flip->n_cases; )
+  for (case_idx = 0; case_idx < flip->n_cases;)
     {
       unsigned long read_cases = MIN (flip->n_cases - case_idx,
                                       case_capacity);
@@ -445,7 +451,7 @@ flip_casereader_read (struct casereader *reader, void *flip_)
    Returns true if successful read, false if an I/O occurred
    during destruction or previously. */
 static void
-flip_casereader_destroy (struct casereader *reader UNUSED, void *flip_)
+flip_casereader_destroy (struct casereader *reader, void *flip_)
 {
   struct flip_pgm *flip = flip_;
   if (flip->error)