X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=perl-module%2FPSPP.xs;h=ba43fa58a8b33f22e1e1c356a8cb42ccced5f65a;hb=c39f02a7c1d95a2c7474a8b86c33e609a01c66e1;hp=f6655b8ded0dbf8d24266a47c3cf6858e4244822;hpb=6615bd0654fe1d821b158db2d343c958ef86e3d7;p=pspp diff --git a/perl-module/PSPP.xs b/perl-module/PSPP.xs index f6655b8ded..ba43fa58a8 100644 --- 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); - memcpy (value_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); - return newSVpvn (value_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) - 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 ) - 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);