@@ -237,10 +237,10 @@ void rest_start(void *arg) {
237237
238238}
239239
240- SEXP nano_eval_res ;
240+ static SEXP nano_parse_eval_res ;
241241
242242void parse_eval_safe (void * data ) {
243- nano_eval_res = R_ParseEvalString ((const char * ) data , R_GlobalEnv );
243+ nano_parse_eval_res = R_ParseEvalString ((const char * ) data , R_GlobalEnv );
244244}
245245
246246void inproc_server (const char * url ) {
@@ -252,27 +252,25 @@ void inproc_server(const char* url) {
252252 if ((xc = nng_rep0_open (& s )) || (xc = nng_listen (s , url , NULL , 0 )))
253253 fatal ("unable to set up inproc" , xc );
254254
255- nano_eval_res = R_BlankScalarString ;
256-
257255 for (;;) {
258256 if ((xc = nng_recvmsg (s , & msg , 0 )))
259257 fatal ("inproc recvmsg" , xc );
260258
261259 const char * body = nng_msg_body (msg );
262260 nano_buf buf ;
263261
262+ nano_parse_eval_res = R_BlankScalarString ;
264263 R_ToplevelExec (parse_eval_safe , (void * ) body );
265264
266- if (TYPEOF (nano_eval_res ) == STRSXP ) {
267- const char * string = NANO_STRING (nano_eval_res );
265+ if (TYPEOF (nano_parse_eval_res ) == STRSXP ) {
266+ const char * string = NANO_STRING (nano_parse_eval_res );
268267 buf .buf = (unsigned char * ) string ;
269268 buf .cur = strlen (string );
270269 } else {
271- nano_serialize (& buf , nano_eval_res , R_NilValue );
270+ nano_serialize (& buf , nano_parse_eval_res , R_NilValue );
272271 }
273272 nng_msg_clear (msg );
274273 nng_msg_append (msg , buf .buf , buf .cur );
275- nano_eval_res = R_BlankScalarString ;
276274 if ((xc = nng_sendmsg (s , msg , 0 )))
277275 fatal ("inproc sendmsg" , xc );
278276
0 commit comments