On 11-01-11 6:55 PM, luke-tier...@uiowa.edu wrote:
No. Lots of internal functions expect their callers to protect their
arguments, for efficiency reasons. eval is called very often and
almost always with argument that are protected because they are in the
evaluation engine, so it would be wasteful and potentially very costly
if eval protected its arguments every time it is called. (I don't
tknow what the cost would be to do so in the current implementation
but it could be prohibitive if we moved to some different approaches,
so for now we whould continue to expect callers of eval to make sure
the argumetns are protected.)

Do we have an isProtected() function to use in debugging? It should check if something is in the protection stack or is protected for some other reason, so it doesn't look trivial to write.

Duncan Murdoch



Best,

luke

On Tue, 11 Jan 2011, Simon Urbanek wrote:

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




______________________________________________
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