]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
lex: Do not let input() return 0 when end-of-file is reached
authorJung-uk Kim <jkim@FreeBSD.org>
Wed, 17 Feb 2021 07:22:47 +0000 (02:22 -0500)
committerJung-uk Kim <jkim@FreeBSD.org>
Wed, 17 Feb 2021 07:22:47 +0000 (02:22 -0500)
commit6b7e592c215fb76ea027f25030ddc9a697184fbe
tree09f4a3c77d3934d6a8f6601791086fab5c5a4683
parent3396647c8dc40e859609995d8f5415df43504416
lex: Do not let input() return 0 when end-of-file is reached

Importing flex 2.6.4 has introduced a regression: input() now returns 0
instead of EOF to indicate that the end of input was reached, just like
traditional AT&T and POSIX lex.  Note the behavior contradicts flex(1).
See "INCOMPATIBILITIES WITH LEX AND POSIX" section for information.
This incompatibility traces back to the original version and documented
in its manual page by the Vern Paxson.

Apparently, it has been reported in a few places, e.g.,

https://github.com/westes/flex/issues/448
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=911415

Unfortunately, this also breaks the scanner used by libdtrace and
dtrace is unable to resolve some probe argument types as a result.  See
PR253440 for more information.

Note the regression was introduced by the following upstream commit
without any explanation or documentation change:

https://github.com/westes/flex/commit/f863c9490e6912ffcaeb12965fb3a567a10745ff

Now we restore the traditional flex behavior unless lex-compatibility
mode is set with "-l" option because I believe the author originally
wanted to make it more lex and POSIX compatible.

PR: 253440
Reported by: markj
contrib/flex/src/flex.skl