[R] mkChar can be interrupted

Vadim Ogranovich vograno at evafunds.com
Mon Jun 14 20:55:21 CEST 2004


Hi,
 
As was discussed earlier in another thread and as documented in R-exts
.Call() should not be interruptible by Ctrl-C. However the following
code, which spends most of its time inside mkChar, turned out to be
interruptible on RH-7.3 R-1.8.1 gcc-2.96:
 
 
#include <Rinternals.h>
#include <R.h>

SEXP foo0(const SEXP nSexp) {
  int i, n;
  SEXP resSexp;

  if (!isInteger(nSexp))
    error("wrong arg type\n");

  n = asInteger(nSexp);
  resSexp = PROTECT(allocVector(STRSXP, n));
    
  Rprintf("!!!time to interrup!!!\n");
  for (i=0; i<n; ++i) {
    SET_STRING_ELT(resSexp, i, mkChar("foo"));
  }

  Rprintf("end mkChar\n");
  UNPROTECT(1);
    
  return R_NilValue;
}



# invoke 'foo0' and give it an argument large enough to let you type
Ctrl-C
# double the argument if you see "end mkChar" and do it again :-)
> x <- .Call("foo0", as.integer(1e7))
!!!time to interrup!!!

> 
> version
         _                
platform i686-pc-linux-gnu
arch     i686             
os       linux-gnu        
system   i686, linux-gnu  
status                    
major    1                
minor    8.1              
year     2003             
month    11               
day      21               
language R                


Thanks,
Vadim




More information about the R-help mailing list