Some GCC C compilers can't subtract higher pointers from lower pointers properly, when those pointers must be scaled (because they point to objects that are wider than a char). The scaling is done as unsigned which makes the difference positive instead of negative.
So, a broken expression was changed into a direct comparison between the two pointers.
}
# ifdef LEXDEBUG
- if((*(lsp-1)-yysvec-1)<0)
+ if (*(lsp-1) < yysvec + 1)
{
fprintf(yyout,"yylook: stopped (end)\n");
}