[Rd] help with rchk warnings on Rf_eval(Rf_lang2(...))

Dirk Eddelbuettel edd @end|ng |rom deb|@n@org
Tue Mar 24 13:19:53 CET 2020


On 24 March 2020 at 11:39, Lionel Henry wrote:
| > Shield<SEXP> res(Rcpp_fast_eval(Rf_lang2(asEnvironmentSym, x), R_GlobalEnv));
| 
| The call should be protected before evaluation though. So more like:
| 
| Shield<SEXP> call(Rf_lang2(asEnvironmentSym, x));
| return Rcpp_fast_eval(call, R_GlobalEnv);

Good catch.

And recursive grep for Rf_lang2 in the Rcpp sources tree suggests this is as the
common pattern in all other instances.

Dirk

edd using rob:~/git/rcpp(master)$ ag Rf_lang2 inst/include/
inst/include/Rcpp/exceptions.h
360:        Rcpp::Shield<SEXP> simpleErrorExpr(Rf_lang2(::Rf_install("simpleError"), txt));
365:        Rcpp::Shield<SEXP> simpleErrorExpr( Rf_lang2(::Rf_install("simpleError"), tryError ));
388:    Rcpp::Shield<SEXP> expr( Rf_lang2( stop_sym , condition ) ) ;
395:    Rcpp::Shield<SEXP> expr( Rf_lang2( stop_sym , condition ) ) ;

inst/include/Rcpp/Reference.h
62:            Shield<SEXP> call(Rf_lang2(newSym, str));

inst/include/Rcpp/api/meat/Rcpp_eval.h
99:            Shield<SEXP> conditionMessageCall(::Rf_lang2(::Rf_install("conditionMessage"), res));

inst/include/Rcpp/macros/macros.h
69:       SEXP expr = PROTECT( Rf_lang2( stop_sym , rcpp_output_condition ) ) ;                     \

inst/include/Rcpp/Environment.h
36:                Shield<SEXP> res(Rcpp_fast_eval(Rf_lang2(asEnvironmentSym, x), R_GlobalEnv));
250:                    Shield<SEXP> call(Rf_lang2(internalSym, Rf_lang4(removeSym, str, Storage::get__(), Rf_ScalarLogical(FALSE))));
376:                Shield<SEXP> call( Rf_lang2(getNamespaceSym, package_str) );

inst/include/Rcpp/r_cast.h
34:                Shield<SEXP> call(Rf_lang2(funSym, x));
117:                    Shield<SEXP> call( Rf_lang2( Rf_install( "as.character" ), x ) );

inst/include/Rcpp/Module.h
456:    Shield<SEXP> __load_module_call__( Rf_lang2( GET_MODULE_SYM, _rcpp_module_boot_##NAME() ) ); \

inst/include/Rcpp/lang.h
26:#define Rcpp_lang2 Rf_lang2
edd using rob:~/git/rcpp(master)$ 

-- 
http://dirk.eddelbuettel.com | @eddelbuettel | edd using debian.org



More information about the R-devel mailing list