X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fexpressions%2Foperations.def;h=d3044043df4a168bac21a466422eb4038ea38388;hb=263613c4fe117bcf0702cc7d0d334068b2424d37;hp=2d31bd47182dcb158d9f9c50e644fb03bb7b07bf;hpb=a1efcf97ca2f75f4be6a0389ff2372c03ed2d4e1;p=pspp diff --git a/src/language/expressions/operations.def b/src/language/expressions/operations.def index 2d31bd4718..d3044043df 100644 --- a/src/language/expressions/operations.def +++ b/src/language/expressions/operations.def @@ -573,7 +573,7 @@ string function RTRIM (string s, string c) function NUMBER (string s, ni_format f) { union value out; - data_in (ss_head (s, f->w), LEGACY_NATIVE, f->type, f->d, 0, 0, &out, 0); + data_in (ss_head (s, f->w), LEGACY_NATIVE, f->type, f->d, 0, 0, NULL, &out, 0); return out.f; } @@ -582,11 +582,15 @@ absorb_miss string function STRING (x, no_format f) { union value v; struct substring dst; + char *s; v.f = x; - dst = alloc_string (e, f->w); + assert (!fmt_is_string (f->type)); - data_out (&v, f, dst.string); + s = data_out (&v, LEGACY_NATIVE, f); + dst = alloc_string (e, strlen (s)); + strcpy (dst.string, s); + free (s); return dst; } @@ -626,16 +630,16 @@ absorb_miss no_opt no_abbrev string function VALUELABEL (var v) // Artificial. operator SQUARE (x) = x * x; -boolean operator NUM_TO_BOOLEAN (x) +boolean operator NUM_TO_BOOLEAN (x, string op_name) { if (x == 0. || x == 1. || x == SYSMIS) return x; else { - msg (SE, _("A number being treated as a Boolean in an " - "expression was found to have a value other than " - "0 (false), 1 (true), or the system-missing value. " - "The result was forced to 0.")); + msg (SE, _("An operand of the %.*s operator was found to have a value " + "other than 0 (false), 1 (true), or the system-missing " + "value. The result was forced to 0."), + (int) op_name.length, op_name.string); return 0.; } }