I think an important point from Doug has been lost in the subsequent 20-odd messages of flamebombing:
>> I do not see this as compatible with the C++ Design principle we use whereby >> protection / unprotection occurs relative to the end of scope -- and not >> after every single assignment or allocation. >> >> In other words, gctorture() may well be a fine test for the C API and its >> PROTECT and UNPROTECT at every step but possibly not quite as much for Rcpp. > > I don't think so. In the situation that Dominick is describing the C > API is being used (calls to Rf_install, Rf_lang1, Rf_eval, ...) and > you have to play by the rules of the C API. Essentially every time > that you call a function in the C API that can cause a memory > allocation you are open yourself to the possibility of having the > garbage collector run and getting unprotected SEXPs blown away. And, > naturally, Rf_eval can cause memory allocation. > > I understood Dominick to be saying that in the code related to Modules > and the evaluator and all that which we have been trying to debug > there are such cases of the use of the C API that are unsafe. Can anyone comment whether this is correct? Davor _______________________________________________ Rcpp-devel mailing list [email protected] https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
