[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Pspp-cvs] pspp/src/data dictionary.c sys-file-reader.c va...
From: |
John Darrington |
Subject: |
[Pspp-cvs] pspp/src/data dictionary.c sys-file-reader.c va... |
Date: |
Mon, 27 Aug 2007 07:02:35 +0000 |
CVSROOT: /sources/pspp
Module name: pspp
Changes by: John Darrington <jmd> 07/08/27 07:02:35
Modified files:
src/data : dictionary.c sys-file-reader.c variable.c
Log message:
Plugged some more memory leaks.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/pspp/src/data/dictionary.c?cvsroot=pspp&r1=1.45&r2=1.46
http://cvs.savannah.gnu.org/viewcvs/pspp/src/data/sys-file-reader.c?cvsroot=pspp&r1=1.45&r2=1.46
http://cvs.savannah.gnu.org/viewcvs/pspp/src/data/variable.c?cvsroot=pspp&r1=1.30&r2=1.31
Patches:
Index: dictionary.c
===================================================================
RCS file: /sources/pspp/pspp/src/data/dictionary.c,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -b -r1.45 -r1.46
--- dictionary.c 14 Aug 2007 06:22:38 -0000 1.45
+++ dictionary.c 27 Aug 2007 07:02:35 -0000 1.46
@@ -176,20 +176,7 @@
while (d->var_cnt > 0 )
{
- struct variable *v = d->var[d->var_cnt - 1];
- int dict_index = var_get_dict_index (v);
- int case_index = var_get_case_index (v);
- int val_cnt = var_get_value_cnt (v);
-
- var_clear_vardict (v);
- var_destroy (v);
-
- d->var_cnt--;
-
- if (d->callbacks && d->callbacks->var_deleted )
- d->callbacks->var_deleted (d,
- dict_index, case_index, val_cnt,
- d->cb_data);
+ dict_delete_var (d, d->var[d->var_cnt - 1]);
}
free (d->var);
@@ -516,6 +503,7 @@
var_clear_vardict (v);
var_destroy (v);
+
if (d->callbacks && d->callbacks->var_deleted )
d->callbacks->var_deleted (d, dict_index, case_index, val_cnt, d->cb_data);
}
@@ -959,8 +947,16 @@
assert (cnt == 0 || split != NULL);
d->split_cnt = cnt;
- d->split = cnt > 0 ? xnrealloc (d->split, cnt, sizeof *d->split) : NULL;
+ if ( cnt > 0 )
+ {
+ d->split = xnrealloc (d->split, cnt, sizeof *d->split) ;
memcpy (d->split, split, cnt * sizeof *d->split);
+ }
+ else
+ {
+ free (d->split);
+ d->split = NULL;
+ }
if ( d->callbacks && d->callbacks->split_changed )
d->callbacks->split_changed (d, d->cb_data);
Index: sys-file-reader.c
===================================================================
RCS file: /sources/pspp/pspp/src/data/sys-file-reader.c,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -b -r1.45 -r1.46
--- sys-file-reader.c 27 Aug 2007 00:06:23 -0000 1.45
+++ sys-file-reader.c 27 Aug 2007 07:02:35 -0000 1.46
@@ -939,6 +939,7 @@
var_set_short_name (var, i, short_names[i]);
free (short_names[i]);
}
+ free (short_names);
}
close_variable_to_value_map (r, map);
r->has_long_var_names = true;
Index: variable.c
===================================================================
RCS file: /sources/pspp/pspp/src/data/variable.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -b -r1.30 -r1.31
--- variable.c 25 Jul 2007 04:31:34 -0000 1.30
+++ variable.c 27 Aug 2007 07:02:35 -0000 1.31
@@ -173,6 +173,7 @@
{
assert (!var_has_vardict (v));
cat_stored_values_destroy (v->obs_vals);
+ var_clear_short_names (v);
var_clear_aux (v);
val_labs_destroy (v->val_labs);
var_clear_label (v);
@@ -840,7 +841,6 @@
{
size_t old_cnt = var->short_name_cnt;
size_t i;
-
var->short_name_cnt = MAX (idx * 2, 1);
var->short_names = xnrealloc (var->short_names, var->short_name_cnt,
sizeof *var->short_names);
@@ -862,6 +862,7 @@
for (i = 0; i < v->short_name_cnt; i++)
free (v->short_names[i]);
+ free (v->short_names);
v->short_names = NULL;
v->short_name_cnt = 0;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Pspp-cvs] pspp/src/data dictionary.c sys-file-reader.c va...,
John Darrington <=