[Rd] bug in R 2.7.0 (PR#11497)

Bill Dunlap bill at insightful.com
Thu May 22 23:52:56 CEST 2008


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) {



More information about the R-devel mailing list