/* Create destination variables, if needed.
This must be the final step; otherwise we'd have to
delete destination variables on failure. */
+ trns->dst_dict = dataset_dict (ds);
if (trns->src_vars != trns->dst_vars)
create_dst_vars (trns, dataset_dict (ds));
{
size_t i;
- trns->dst_dict = dict;
-
for (i = 0; i < trns->var_cnt; i++)
{
const struct variable **var = &trns->dst_vars[i];
find_src_string (struct recode_trns *trns, const uint8_t *value,
const struct variable *src_var)
{
- struct mapping *m;
+ const char *encoding = dict_get_encoding (trns->dst_dict);
int width = var_get_width (src_var);
+ struct mapping *m;
for (m = trns->mappings; m < trns->mappings + trns->map_cnt; m++)
{
case MAP_CONVERT:
{
union value uv;
+ char *error;
+
+ error = data_in (ss_buffer (CHAR_CAST_BUG (char *, value), width),
+ LEGACY_NATIVE, FMT_F, &uv, 0, encoding);
+ match = error == NULL;
+ free (error);
- msg_disable ();
- match = data_in (ss_buffer (CHAR_CAST_BUG (char *, value), width),
- LEGACY_NATIVE, FMT_F, 0, 0, trns->dst_dict,
- &uv, 0);
- msg_enable ();
out->value.f = uv.f;
break;
}