Merge commit 'origin/stable'
[pspp-builds.git] / src / language / data-io / print-space.c
index 39773ec0843d98588dd8c11401201e21a2f3983c..3f73ee25a8de16fb1f1883608e2c6fa8cf25fdba 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 2006 Free Software Foundation, Inc.
+   Copyright (C) 2006, 2009 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -82,6 +82,7 @@ cmd_print_space (struct lexer *lexer, struct dataset *ds)
       writer = dfm_open_writer (handle);
       if (writer == NULL)
         {
+          fh_unref (handle);
           expr_free (expr);
           return CMD_FAILURE;
         }
@@ -95,12 +96,13 @@ cmd_print_space (struct lexer *lexer, struct dataset *ds)
 
   add_transformation (ds,
                      print_space_trns_proc, print_space_trns_free, trns);
+  fh_unref (handle);
   return CMD_SUCCESS;
 }
 
 /* Executes a PRINT SPACE transformation. */
 static int
-print_space_trns_proc (void *t_, struct ccase *c,
+print_space_trns_proc (void *t_, struct ccase **c,
                        casenumber case_num UNUSED)
 {
   struct print_space_trns *trns = t_;
@@ -109,7 +111,7 @@ print_space_trns_proc (void *t_, struct ccase *c,
   n = 1;
   if (trns->expr)
     {
-      double f = expr_evaluate_num (trns->expr, c, case_num);
+      double f = expr_evaluate_num (trns->expr, *c, case_num);
       if (f == SYSMIS)
         msg (SW, _("The expression on PRINT SPACE evaluated to the "
                    "system-missing value."));