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");
                }