Thanks for the analysis and fix. I'm not sure how that slipped by.
I'll commit your patch.
Duncan Murdoch
On 22/05/2008 5:52 PM, Bill Dunlap wrote:
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
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel