diff options
author | Tom <tom@ojodeagua.com> | 2020-07-12 10:44:11 -0400 |
---|---|---|
committer | Zack Weinberg <zackw@panix.com> | 2020-07-12 10:52:26 -0400 |
commit | 8173e5d6fefd8a2a36974610f85784121f8dc36e (patch) | |
tree | fe8957f10685e08b7f9263a643f61af597bbf587 | |
parent | a9323950d2b2c799e8c0d71d27b6208cbc6b9b96 (diff) | |
download | autoconf-8173e5d6fefd8a2a36974610f85784121f8dc36e.tar.gz |
Fix logic error in _AC_PROG_LEX_YYTEXT_DECL (#109320)
The search for the appropriate value for @LEXLIB@ did not distinguish
correctly between success (‘break’ out of a shell for loop, having set
$ac_cv_lib_lex) and failure (normal termination of the loop, value in
$ac_cv_lib_lex is garbage). Bug report and original patch by
Tom <tom@ojodeagua.com> with refinements by Zack Weinberg.
* lib/autoconf/programs.m4 (_AC_PROG_LEX_YYTEXT_DECL):
Error out if we cannot find the library that (f)lex scanners
need to be linked against, instead of continuing with @LEXLIB@
set to the empty string.
-rw-r--r-- | lib/autoconf/programs.m4 | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/lib/autoconf/programs.m4 b/lib/autoconf/programs.m4 index 006c0b66..9deb62e8 100644 --- a/lib/autoconf/programs.m4 +++ b/lib/autoconf/programs.m4 @@ -741,7 +741,7 @@ main (void) } ]_ACEOF _AC_DO_VAR(LEX conftest.l) -AC_CACHE_CHECK([lex output file root], [ac_cv_prog_lex_root], [ +AC_CACHE_CHECK([for lex output file root], [ac_cv_prog_lex_root], [ if test -f lex.yy.c; then ac_cv_prog_lex_root=lex.yy elif test -f lexyy.c; then @@ -751,20 +751,25 @@ else fi]) AC_SUBST([LEX_OUTPUT_ROOT], [$ac_cv_prog_lex_root])dnl -if ${LEXLIB+false} :; then - AC_CACHE_CHECK([lex library], [ac_cv_lib_lex], [ +AS_VAR_SET_IF([LEXLIB], [], [ + AC_CACHE_CHECK([for lex library], [ac_cv_lib_lex], [ + ac_cv_lib_lex='not found' ac_save_LIBS=$LIBS - ac_cv_lib_lex='none needed' for ac_lib in '' -lfl -ll; do LIBS="$ac_lib $ac_save_LIBS" AC_LINK_IFELSE([AC_LANG_DEFINES_PROVIDED[`cat $LEX_OUTPUT_ROOT.c`]], - [ac_cv_lib_lex=$ac_lib]) - test "$ac_cv_lib_lex" != 'none needed' && break + [ac_cv_lib_lex="${ac_lib:-none needed}" + break]) done LIBS=$ac_save_LIBS ]) - test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex -fi + AS_IF( + [test "$ac_cv_lib_lex" = 'not found'], + [AC_MSG_ERROR([required lex library not found])], + [test "$ac_cv_lib_lex" = 'none needed'], + [LEXLIB=''], + [LEXLIB=$ac_cv_lib_lex]) +]) AC_SUBST(LEXLIB) AC_CACHE_CHECK(whether yytext is a pointer, ac_cv_prog_lex_yytext_pointer, |