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
> 
> ______________________________________________
> 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

Reply via email to