> diff --git a/extra/lempar.c b/extra/lempar.c > index d043e39..595f89e 100644 > --- a/extra/lempar.c > +++ b/extra/lempar.c > @@ -935,7 +935,8 @@ void Parse( > yymajor = YYNOCODE; > #endif > } > - }while( yymajor!=YYNOCODE && yypParser->yytos>yypParser->yystack ); > + }while( yymajor!=YYNOCODE && yypParser->yytos>yypParser->yystack > + PARSER_ERROR_CHECK); > #ifndef NDEBUG > if( yyTraceFILE ){ > yyStackEntry *i; > diff --git a/src/box/sql/parse.y b/src/box/sql/parse.y > index 3a443a0..f241b8d 100644 > --- a/src/box/sql/parse.y > +++ b/src/box/sql/parse.y > @@ -80,6 +80,13 @@ > #define YYMALLOCARGTYPE u64 > > /* > + * Stop the parser if an error occurs. This macro adds an > + * additional check that allows the parser to be stopped if any > + * error was noticed. > + */ > +#define PARSER_ERROR_CHECK && ! pParse->is_aborted Any arguments in favour of using macro in this case? Why don’t simply inline this condition? The rest is OK as obvious.