dictionary: Set encoding early when cloning a dictionary.
authorBen Pfaff <blp@cs.stanford.edu>
Sat, 23 Apr 2011 19:01:35 +0000 (12:01 -0700)
committerBen Pfaff <blp@cs.stanford.edu>
Tue, 26 Apr 2011 04:13:53 +0000 (21:13 -0700)
Many operations that involve the names of variables and other entities
in a dictionary depend on the dictionary's encoding, so it is
potentially important to have the encoding set properly when adding
other entities to the dictionary.

I did not check that this fixes an actual bug.

src/data/dictionary.c

index c00bd4face382c363990b6185741bdf1d62080c5..7d67defbfecfc61fa3f3637ecfbb94c127c4b75a 100644 (file)
@@ -198,6 +198,11 @@ dict_clone (const struct dictionary *s)
 
   d = dict_create ();
 
+  /* Set the new dictionary's encoding early so that string length limitations
+     are interpreted correctly. */
+  if ( s->encoding)
+    d->encoding = xstrdup (s->encoding);
+
   for (i = 0; i < s->var_cnt; i++)
     {
       struct variable *sv = s->var[i].var;
@@ -235,9 +240,6 @@ dict_clone (const struct dictionary *s)
   for (i = 0; i < s->vector_cnt; i++)
     d->vector[i] = vector_clone (s->vector[i], s, d);
 
-  if ( s->encoding)
-    d->encoding = xstrdup (s->encoding);
-
   dict_set_attributes (d, dict_get_attributes (s));
 
   for (i = 0; i < s->n_mrsets; i++)