X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fexpressions%2Foperations.def;h=0286acf91e393d917a1259181165d4c8c88c8934;hb=refs%2Fbuilds%2F20100925040502%2Fpspp;hp=b7783257cdd990548541ee68b60c638bcf0476e7;hpb=38993354cabb6fc37bb882be92f9a49e9aeb4c88;p=pspp diff --git a/src/language/expressions/operations.def b/src/language/expressions/operations.def index b7783257cd..0286acf91e 100644 --- a/src/language/expressions/operations.def +++ b/src/language/expressions/operations.def @@ -581,8 +581,19 @@ 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, 0, 0, &out, 0, NULL); + char *error; + + if (s.length > f->w) + s.length = f->w; + error = data_in (s, LEGACY_NATIVE, f->type, &out, 0, NULL); + if (error == NULL) data_in_imply_decimals (s, LEGACY_NATIVE, f->type, f->d, &out); + else + { + msg (SE, "Cannot parse \"%.*s\" as format %s: %s", + (int) s.length, s.string, fmt_name (f->type), error); + free (error); + } return out.f; }