projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
data-in: Make data_in() parameters more uniform.
[pspp]
/
src
/
language
/
xforms
/
recode.c
diff --git
a/src/language/xforms/recode.c
b/src/language/xforms/recode.c
index 7f45865739ce4691cba7fa984a5b64a933267740..c9787b11bdfeaf3094b1650a76daa50dabedb76e 100644
(file)
--- a/
src/language/xforms/recode.c
+++ b/
src/language/xforms/recode.c
@@
-159,6
+159,7
@@
cmd_recode (struct lexer *lexer, struct dataset *ds)
/* Create destination variables, if needed.
This must be the final step; otherwise we'd have to
delete destination variables on failure. */
/* 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));
if (trns->src_vars != trns->dst_vars)
create_dst_vars (trns, dataset_dict (ds));
@@
-545,8
+546,6
@@
create_dst_vars (struct recode_trns *trns, struct dictionary *dict)
{
size_t i;
{
size_t i;
- trns->dst_dict = dict;
-
for (i = 0; i < trns->var_cnt; i++)
{
const struct variable **var = &trns->dst_vars[i];
for (i = 0; i < trns->var_cnt; i++)
{
const struct variable **var = &trns->dst_vars[i];
@@
-608,8
+607,9
@@
static const struct map_out *
find_src_string (struct recode_trns *trns, const uint8_t *value,
const struct variable *src_var)
{
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);
int width = var_get_width (src_var);
+ struct mapping *m;
for (m = trns->mappings; m < trns->mappings + trns->map_cnt; m++)
{
for (m = trns->mappings; m < trns->mappings + trns->map_cnt; m++)
{
@@
-632,8
+632,7
@@
find_src_string (struct recode_trns *trns, const uint8_t *value,
msg_disable ();
match = data_in (ss_buffer (CHAR_CAST_BUG (char *, value), width),
msg_disable ();
match = data_in (ss_buffer (CHAR_CAST_BUG (char *, value), width),
- LEGACY_NATIVE, FMT_F, 0, 0, trns->dst_dict,
- &uv, 0);
+ LEGACY_NATIVE, FMT_F, 0, 0, &uv, 0, encoding);
msg_enable ();
out->value.f = uv.f;
break;
msg_enable ();
out->value.f = uv.f;
break;