projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
zip-reader: New function zip_reader_get_member_name().
[pspp]
/
perl-module
/
PSPP.xs
diff --git
a/perl-module/PSPP.xs
b/perl-module/PSPP.xs
index f6655b8ded0dbf8d24266a47c3cf6858e4244822..ba43fa58a8b33f22e1e1c356a8cb42ccced5f65a 100644
(file)
--- a/
perl-module/PSPP.xs
+++ b/
perl-module/PSPP.xs
@@
-141,7
+141,7
@@
scalar_to_value (union value *val, SV *scalar, const struct variable *var)
const char *p = SvPV (scalar, len);
int width = var_get_width (var);
value_set_missing (val, width);
const char *p = SvPV (scalar, len);
int width = var_get_width (var);
value_set_missing (val, width);
- memcpy (val
ue_str_rw (val, width)
, p, len);
+ memcpy (val
->s
, p, len);
}
}
}
}
@@
-159,7
+159,7
@@
value_to_scalar (const union value *val, const struct variable *var)
else
{
int width = var_get_width (var);
else
{
int width = var_get_width (var);
- return newSVpvn (val
ue_str (val, width)
, width);
+ return newSVpvn (val
->s
, width);
}
}
}
}
@@
-412,12
+412,15
@@
INIT:
croak ("No more than 3 missing values are permitted");
for (i = 0; i < items - 1; ++i)
croak ("No more than 3 missing values are permitted");
for (i = 0; i < items - 1; ++i)
-
scalar_to_value
(&val[i], ST(i+1), var);
+
make_value_from_scalar
(&val[i], ST(i+1), var);
CODE:
struct missing_values mv;
mv_init (&mv, var_get_width (var));
for (i = 0 ; i < items - 1; ++i )
CODE:
struct missing_values mv;
mv_init (&mv, var_get_width (var));
for (i = 0 ; i < items - 1; ++i )
- mv_add_value (&mv, &val[i]);
+ {
+ mv_add_value (&mv, &val[i]);
+ value_destroy (&val[i], var_get_width (var));
+ }
var_set_missing_values (var, &mv);
var_set_missing_values (var, &mv);