URI: 
       thoc: don't nest calls to follow() when lexing ++/+= and --/-= (#287) - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit f1dd3f065a97f57bf59db2e3284868e181734159
   DIR parent 9389de63d7b0dab99773511f48b2d303e3f957d7
  HTML Author: deepcube <evan.gates@gmail.com>
       Date:   Thu, 19 Sep 2019 10:10:28 -0700
       
       hoc: don't nest calls to follow() when lexing ++/+= and --/-= (#287)
       
       The code had a nested use of the follow() function that could cause +=+
       and -=- to register as ++ and --.  The first follow() to execute could
       consume a character and match and then the second follow() could consume
       another character and match.  For example i-=-10 would result in a syntax
       error and i-=- would decrement i.
       Diffstat:
         M src/cmd/hoc/hoc.y                   |       4 ++--
       
       1 file changed, 2 insertions(+), 2 deletions(-)
       ---
   DIR diff --git a/src/cmd/hoc/hoc.y b/src/cmd/hoc/hoc.y
       t@@ -215,8 +215,8 @@ yylex(void)                /* hoc6 */
                        return STRING;
                }
                switch (c) {
       -        case '+':        return follow('+', INC, follow('=', ADDEQ, '+'));
       -        case '-':        return follow('-', DEC, follow('=', SUBEQ, '-'));
       +        case '+':        return follow('+', INC, '+') == INC ? INC : follow('=', ADDEQ, '+');
       +        case '-':        return follow('-', DEC, '-') == DEC ? DEC : follow('=', SUBEQ, '-');
                case '*':        return follow('=', MULEQ, '*');
                case '/':        return follow('=', DIVEQ, '/');
                case '%':        return follow('=', MODEQ, '%');