Interesting, I'd argue that the bug is in eval() not protecting its arguments
since the usual convention is for functions to protect its arguments...
On Jan 11, 2011, at 2:33 PM, Romain Francois wrote:
> Hello,
>
> Using R-devel (rev 53950), I get inconsistent results with as.environment(
> VECSXP ) when gctorture is on.
>
> Consider:
>
> a <- list( aa = rnorm, bb = runif )
> gctorture(TRUE)
> as.environment( a )
>
> The last line sometimes produces the correct environment, but sometimes I get
> errors. Here are the three situations:
>
> # good
> > as.environment( a )
> <environment: 0x100b1c978>
>
> # not good
> > as.environment( a )
> Erreur dans length(x) : 'x' est manquant
>
> # not good either
> > as.environment( a )
> Erreur dans list(NULL, list(aa = function (n, mean = 0, sd = 1) :
> correspondance partielle de chaînes de caractères incorrecte
>
>
> Is it because the call made by lang4 is not protected while evaluated in this
> line :
>
> case VECSXP: {
> /* implement as.environment.list() {isObject(.) is false for a list} */
> return(eval(lang4(install("list2env"), arg,
> /*envir = */R_NilValue, /* parent = */R_EmptyEnv),
> rho));
> }
>
>
> (BTW, this was detected in a looooooooong Rcpp-devel thread. See
> http://comments.gmane.org/gmane.comp.lang.r.rcpp/1336)
>
> Romain
>
> --
> Romain Francois
> Professional R Enthusiast
> +33(0) 6 28 91 30 30
> http://romainfrancois.blog.free.fr
> |- http://bit.ly/fT2rZM : highlight 0.2-5
> |- http://bit.ly/gpCSpH : Evolution of Rcpp code size
> `- http://bit.ly/hovakS : RcppGSL initial release
>
> ______________________________________________
> [email protected] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
>
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel