From simon.urbanek at r-project.org  Tue Jan 11 23:15:37 2011
From: simon.urbanek at r-project.org (Simon Urbanek)
Date: Tue, 11 Jan 2011 17:15:37 -0500
Subject: [Rd] as.environment.list provides inconsistent results under
	torture
In-Reply-To: <4D2CB092.6000303@r-enthusiasts.com>
References: <4D2CB092.6000303@r-enthusiasts.com>
Message-ID: <792C6196-A236-44AC-B734-E38A09791CB4@r-project.org>

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 at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
> 
> 



[Rd] as.environment.list provides inconsistent results under torture
Simon Urbanek