On 05/07/2016 18:12, Richard Hipp wrote:
Please try https://www.sqlite.org/src/info/2683b375ad129117 and verify
that the changes on trunk are working.  Thanks.

Still doesn't work for me. The structure of the #ifdefs in `Parse` is:

    #ifdef YYERRORSYMBOL
      ...
    #elif defined(YYNOERRORRECOVERY)
      ...
    #else  /* YYERRORSYMBOL is not defined */
      ...
    #endif

Your first check-in modifies the first branch, your second check-in the second branch, resulting in:

    #ifdef YYERRORSYMBOL
      ...
      #ifndef YYNOERRORRECOVERY
        yypParser->yyerrcnt = -1;
      #endif
      ...
    #elif defined(YYNOERRORRECOVERY)
      ...
      #ifndef YYNOERRORRECOVERY
        yypParser->yyerrcnt = -1;
      #endif
      ...
    #else  /* YYERRORSYMBOL is not defined */
      ...
    #endif

The change to the second branch has no effect because YYNOERRORRECOVERY is always defined. My patch modifies the third branch ("YYERRORSYMBOL is not defined"). This fixes code that defines neither YYERRORSYMBOL nor YYNOERRORRECOVERY. I think the code should look like this:

    #ifdef YYERRORSYMBOL
      ...
      #ifndef YYNOERRORRECOVERY
        yypParser->yyerrcnt = -1;
      #endif
      ...
    #elif defined(YYNOERRORRECOVERY)
      ...
    #else  /* YYERRORSYMBOL is not defined */
      ...
      yypParser->yyerrcnt = -1;
      ...
    #endif

(Another check for YYNOERRORRECOVERY isn't really needed in the third branch. It will always be undef.)

Nick

_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to