projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix memory leak
[pspp]
/
src
/
language
/
data-io
/
save.c
diff --git
a/src/language/data-io/save.c
b/src/language/data-io/save.c
index e94c020b168d3a59473b396c0c64aa405bcf1877..91fbc2fd3bfcb6f6a55ff202698f9c237f52e853 100644
(file)
--- a/
src/language/data-io/save.c
+++ b/
src/language/data-io/save.c
@@
-1,5
+1,5
@@
/* PSPP - a program for statistical analysis.
/* PSPP - a program for statistical analysis.
- Copyright (C) 1997-9, 2000, 2006, 2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 1997-9, 2000, 2006, 2007, 2008
, 2009, 2010
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
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
@@
-105,7
+105,6
@@
parse_output_proc (struct lexer *lexer, struct dataset *ds,
enum writer_type writer_type)
{
bool retain_unselected;
enum writer_type writer_type)
{
bool retain_unselected;
- struct variable *saved_filter_variable;
struct casewriter *output;
bool ok;
struct casewriter *output;
bool ok;
@@
-114,16
+113,10
@@
parse_output_proc (struct lexer *lexer, struct dataset *ds,
if (output == NULL)
return CMD_CASCADING_FAILURE;
if (output == NULL)
return CMD_CASCADING_FAILURE;
- saved_filter_variable = dict_get_filter (dataset_dict (ds));
- if (retain_unselected)
- dict_set_filter (dataset_dict (ds), NULL);
-
- casereader_transfer (proc_open (ds), output);
+ casereader_transfer (proc_open_filtering (ds, !retain_unselected), output);
ok = casewriter_destroy (output);
ok = proc_commit (ds) && ok;
ok = casewriter_destroy (output);
ok = proc_commit (ds) && ok;
- dict_set_filter (dataset_dict (ds), saved_filter_variable);
-
return ok ? CMD_SUCCESS : CMD_CASCADING_FAILURE;
}
return ok ? CMD_SUCCESS : CMD_CASCADING_FAILURE;
}
@@
-326,14
+319,12
@@
parse_write_command (struct lexer *lexer, struct dataset *ds,
return NULL;
}
return NULL;
}
-/* Writes case C to the system file specified on XSAVE or XEXPORT. */
+/* Writes case
*
C to the system file specified on XSAVE or XEXPORT. */
static int
static int
-output_trns_proc (void *trns_, struct ccase *c, casenumber case_num UNUSED)
+output_trns_proc (void *trns_, struct ccase *
*
c, casenumber case_num UNUSED)
{
struct output_trns *t = trns_;
{
struct output_trns *t = trns_;
- struct ccase tmp;
- case_clone (&tmp, c);
- casewriter_write (t->writer, &tmp);
+ casewriter_write (t->writer, case_ref (*c));
return TRNS_CONTINUE;
}
return TRNS_CONTINUE;
}