[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Pspp-cvs] pspp/src/data ChangeLog dictionary.c
From: |
John Darrington |
Subject: |
[Pspp-cvs] pspp/src/data ChangeLog dictionary.c |
Date: |
Sat, 27 Oct 2007 07:12:41 +0000 |
CVSROOT: /sources/pspp
Module name: pspp
Changes by: John Darrington <jmd> 07/10/27 07:12:41
Modified files:
src/data : ChangeLog dictionary.c
Log message:
Fixed bugs #21397 and 21330
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/pspp/src/data/ChangeLog?cvsroot=pspp&r1=1.163&r2=1.164
http://cvs.savannah.gnu.org/viewcvs/pspp/src/data/dictionary.c?cvsroot=pspp&r1=1.48&r2=1.49
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/pspp/pspp/src/data/ChangeLog,v
retrieving revision 1.163
retrieving revision 1.164
diff -u -b -r1.163 -r1.164
--- ChangeLog 9 Oct 2007 03:50:20 -0000 1.163
+++ ChangeLog 27 Oct 2007 07:12:40 -0000 1.164
@@ -1,3 +1,9 @@
+2007-10-27 John Darrington <address@hidden>
+
+ * dictionary.c: Fixed bug in dict_clone, where the vardict.dict member
+ wasn't initialised correctly. Closes bugs #21330 and 21397
+
+
2007-10-08 Ben Pfaff <address@hidden>
Fix bug #21280. Thanks to John Darrington for review.
Index: dictionary.c
===================================================================
RCS file: /sources/pspp/pspp/src/data/dictionary.c,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -b -r1.48 -r1.49
--- dictionary.c 12 Oct 2007 04:59:26 -0000 1.48
+++ dictionary.c 27 Oct 2007 07:12:40 -0000 1.49
@@ -135,6 +135,8 @@
for (i = 0; i < s->var_cnt; i++)
{
+ const struct vardict_info *svdi;
+ struct vardict_info dvdi;
struct variable *sv = s->var[i];
struct variable *dv = dict_clone_var_assert (d, sv, var_get_name (sv));
size_t i;
@@ -142,7 +144,10 @@
for (i = 0; i < var_get_short_name_cnt (sv); i++)
var_set_short_name (dv, i, var_get_short_name (sv, i));
- var_set_vardict (dv, var_get_vardict (sv));
+ svdi = var_get_vardict (sv);
+ dvdi = *svdi;
+ dvdi.dict = d;
+ var_set_vardict (dv, &dvdi);
}
d->next_value_idx = s->next_value_idx;
@@ -388,6 +393,12 @@
result = hsh_find (d->name_tab, target);
var_destroy (target);
+ if ( result && var_has_vardict (result))
+ {
+ const struct vardict_info *vdi = var_get_vardict (result);
+ assert (vdi->dict == d);
+ }
+
return result;
}
@@ -1161,9 +1172,7 @@
if ( var_has_vardict (v))
{
const struct vardict_info *vdi = var_get_vardict (v);
- struct dictionary *d;
-
- d = vdi->dict;
+ struct dictionary *d = vdi->dict;
if ( d->callbacks && d->callbacks->var_changed )
d->callbacks->var_changed (d, var_get_dict_index (v), d->cb_data);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Pspp-cvs] pspp/src/data ChangeLog dictionary.c,
John Darrington <=