On Thu, 22 May 2008, Bill Dunlap wrote: > Also, if your input starts with certain errors, parse returns > the stuff after the error: > > parse() > ?err//one > expression(one) > > > After the attached change we get > > > parse() > ?one > expression(one) > > parse(n=2) > ?one;two;three > expression(one, two) > > parse() > ?err//one > Error in parse() : unexpected '/' in "err//" > > Index: gram.y > =================================================================== > --- gram.y (revision 45762) > +++ gram.y (working copy) > @@ -1389,8 +1389,6 @@ > if (c == ';' || c == '\n') break; > } > > - rval = R_Parse1Buffer(buffer, 1, status); > - > /* Was a call to R_Parse1Buffer, but we don't want to reset xxlineno > and xxcolno */ > ParseInit(); > ParseContextInit();
The bug arose 2008-02-14, revision 44472, src/main/gram.y, where it looks like it was intended that the call to R_Parse1Buffer be replaced by most of the contents of R_Parse1Buffer, but the the call itself was not removed (the comment says it was). My change makes the comment true. @@ -1400,6 +1406,12 @@ rval = R_Parse1Buffer(buffer, 1, status); + /* Was a call to R_Parse1Buffer, but we don't want to reset xxlineno and x xcolno */ + ParseInit(); + ParseContextInit(); + R_Parse1(status); + rval = R_CurrentExpr; + switch(*status) { ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel