@@ -52,10 +52,8 @@ extern "C" {
5252 ContextXPtr ctx (ctx_ptr_);
5353 const char * code_string = Rf_translateCharUTF8 (STRING_ELT (code_string_, 0 ));
5454 JSValue val = JS_Eval (ctx.get (), code_string, strlen (code_string), " <input>" , JS_EVAL_TYPE_GLOBAL);
55- SEXP rtn = cpp11::as_sexp (!JS_IsException (val));
56- PROTECT (rtn);
55+ cpp11::sexp rtn = cpp11::as_sexp (!JS_IsException (val));
5756 JS_FreeValue (ctx.get (), val);
58- UNPROTECT (1 );
5957 return rtn;
6058 END_CPP11
6159 }
@@ -78,13 +76,10 @@ extern "C" {
7876 JS_FreeValue (ctx.get (), arg);
7977 }
8078
81- SEXP result = quickjsr::JSValue_to_SEXP (ctx.get (), result_js);
82- PROTECT (result);
79+ cpp11::sexp result = quickjsr::JSValue_to_SEXP (ctx.get (), result_js);
8380 JS_FreeValue (ctx.get (), fun);
8481 JS_FreeValue (ctx.get (), global);
8582 JS_FreeValue (ctx.get (), result_js);
86- UNPROTECT (1 );
87-
8883 return result;
8984 END_CPP11
9085 }
@@ -94,11 +89,9 @@ extern "C" {
9489 ContextXPtr ctx (ctx_ptr_);
9590 JSValue global = JS_GetGlobalObject (ctx.get ());
9691 JSValue result = quickjsr::JS_GetPropertyRecursive (ctx.get (), global, Rf_translateCharUTF8 (STRING_ELT (js_obj_name, 0 )));
97- SEXP rtn = quickjsr::JSValue_to_SEXP (ctx.get (), result);
98- PROTECT (rtn);
92+ cpp11::sexp rtn = quickjsr::JSValue_to_SEXP (ctx.get (), result);
9993 JS_FreeValue (ctx.get (), result);
10094 JS_FreeValue (ctx.get (), global);
101- UNPROTECT (1 );
10295 return rtn;
10396 END_CPP11
10497 }
@@ -124,12 +117,10 @@ extern "C" {
124117 JSContext* rt_ctx = quickjsr::JS_NewCustomContext (rt);
125118
126119 JSValue val = JS_Eval (rt_ctx, eval_string, strlen (eval_string), " <input>" , JS_EVAL_TYPE_GLOBAL);
127- SEXP rtn = quickjsr::JSValue_to_SEXP (rt_ctx, val);
128- PROTECT (rtn);
120+ cpp11::sexp rtn = quickjsr::JSValue_to_SEXP (rt_ctx, val);
129121 JS_FreeValue (rt_ctx, val);
130122 JS_FreeContext (rt_ctx);
131123 JS_FreeRuntime (rt);
132- UNPROTECT (1 );
133124
134125 return rtn;
135126 END_CPP11
@@ -143,15 +134,13 @@ extern "C" {
143134 JSValue arg = quickjsr::SEXP_to_JSValue (rt_ctx, arg_, LOGICAL_ELT (auto_unbox_, 0 ));
144135 JSValue result_js = JS_JSONStringify (rt_ctx, arg, JS_UNDEFINED, JS_UNDEFINED);
145136 const char * res_str = JS_ToCString (rt_ctx, result_js);
146- SEXP json = cpp11::as_sexp (res_str ? res_str : " " );
147- PROTECT (json);
137+ cpp11::sexp json = cpp11::as_sexp (res_str ? res_str : " " );
148138
149139 JS_FreeCString (rt_ctx, res_str);
150140 JS_FreeValue (rt_ctx, result_js);
151141 JS_FreeValue (rt_ctx, arg);
152142 JS_FreeContext (rt_ctx);
153143 JS_FreeRuntime (rt);
154- UNPROTECT (1 );
155144
156145 return json;
157146 END_CPP11
@@ -164,12 +153,11 @@ extern "C" {
164153
165154 const char * json = Rf_translateCharUTF8 (STRING_ELT (json_, 0 ));
166155 JSValue result = JS_ParseJSON (rt_ctx, json, strlen (json), " <input>" );
167- SEXP rtn = quickjsr::JSValue_to_SEXP (rt_ctx, result);
168- PROTECT (rtn);
156+ cpp11::sexp rtn = quickjsr::JSValue_to_SEXP (rt_ctx, result);
157+
169158 JS_FreeValue (rt_ctx, result);
170159 JS_FreeContext (rt_ctx);
171160 JS_FreeRuntime (rt);
172- UNPROTECT (1 );
173161
174162 return rtn;
175163 END_CPP11
0 commit comments