From d64ef7a7204ee0a9a192f8d8c000eabc46ac12fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kirill=20M=C3=BCller?= Date: Thu, 6 Mar 2025 12:03:54 +0100 Subject: [PATCH] chore: Remove `Rf_allocSExp()` which is no longer in R's C API (#1735) --- src/rinterface_extra.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/rinterface_extra.c b/src/rinterface_extra.c index be3af70742..6bf1148422 100644 --- a/src/rinterface_extra.c +++ b/src/rinterface_extra.c @@ -8657,7 +8657,16 @@ SEXP R_igraph_add_env(SEXP graph) { SET_CLASS(result, Rf_duplicate(GET_CLASS(graph))); } - SET_VECTOR_ELT(result, igraph_t_idx_env, Rf_allocSExp(ENVSXP)); + // Get the base namespace + SEXP base_ns = PROTECT(R_FindNamespace(Rf_mkString("base"))); px++; + // Get the emptyenv function + SEXP empty_env_fun = PROTECT(Rf_findVarInFrame(base_ns, Rf_install("emptyenv"))); px++; + // Call emptyenv() + SEXP empty_env = PROTECT(Rf_eval(Rf_lang1(empty_env_fun), R_GlobalEnv)); px++; + // Evaluate the call + SEXP env = PROTECT(R_NewEnv(empty_env, 0, 0)); px++; + + SET_VECTOR_ELT(result, igraph_t_idx_env, env); uuid_generate(my_id); uuid_unparse_lower(my_id, my_id_chr);