From: Ben Pfaff Date: Mon, 3 Aug 2020 00:44:40 +0000 (+0000) Subject: placement-parser: Properly handle LONG_MAX != INT_MAX. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;ds=sidebyside;h=ae42a158b360555ba1541ffeb4dcded3dc323d23;p=pspp placement-parser: Properly handle LONG_MAX != INT_MAX. Also, delete spurious null bytes from the related test. The null bytes spurred a test failure on mingw although I am not sure why. --- diff --git a/src/language/data-io/placement-parser.c b/src/language/data-io/placement-parser.c index 443b9b5916..671933382a 100644 --- a/src/language/data-io/placement-parser.c +++ b/src/language/data-io/placement-parser.c @@ -401,16 +401,17 @@ parse_record_placement (struct lexer *lexer, int *record, int *column) { if (lex_is_integer (lexer)) { - if ((int) lex_integer (lexer) <= *record) + long n = lex_integer (lexer); + if (n <= *record || n > INT_MAX) { msg (SE, _("The record number specified, %ld, is at or " "before the previous record, %d. Data " "fields must be listed in order of " "increasing record number."), - lex_integer (lexer), *record); + n, *record); return false; } - *record = lex_integer (lexer); + *record = n; lex_get (lexer); } else diff --git a/tests/language/lexer/lexer.at b/tests/language/lexer/lexer.at index 879e08785f..25ced0d9ab 100644 Binary files a/tests/language/lexer/lexer.at and b/tests/language/lexer/lexer.at differ