[Rcpp-devel] Rcpp::wrap seg fault (when called with a NULL pointer)

Christoph Bergmeir c.bergmeir at decsai.ugr.es
Tue May 24 13:53:54 CEST 2011


Hi,

yes, after thinking a little bit more I changed my code to:

   if(ret == NULL)
     return R_NilValue;
   else
     return Rcpp::wrap(ret);

and now everything works fine. But I'm still wondering whether it would make sense for Rcpp::wrap to return an R_NilValue when called with NULL (instead of seg-faulting..).

Regards,
Christoph

On 05/24/2011 01:46 PM, Dirk Eddelbuettel wrote:
>
> On 24 May 2011 at 13:22, Christoph Bergmeir wrote:
> | Hello everybody,
> |
> | I just ran into the following problem: Using Rcpp::wrap with a NULL pointer crashes my R. I'm not so sure if this is a bug or if I'm using Rcpp::wrap in a way it shouldn't be used, so I wanted to discuss this here.
> |
> | Here is some example code:
> |
> | This works fine:
> | #-----------------------------------
> | library(inline)
> |
> | src<- '
> |      const char* ret = "test";
> |      return Rcpp::wrap(ret);
> |      '
> |
> | fun<- cxxfunction(signature(), src, plugin="Rcpp")
> | fun()
> | #-----------------------------------
> |
> | Whereas this crashes R:
> | #-----------------------------------
> |
> | src<- '
> | const char* ret = NULL;
> | return Rcpp::wrap(ret);
> | '
> |
> | fun<- cxxfunction(signature(), src, plugin="Rcpp")
> | fun()
> | #-----------------------------------
>
> I think this is mostly of the
>
>      Q  Doctor, doctor it hurts when I do this!
>      A  Well then don't it
>
> variety.  wrap() is tasked with making a valid SEXP out of what you hand it.
> Maybe you want to test for NULL before calling it.
>
> Dirk
>
> |
> | I'm using Rcpp 0.9.4 and R.2.13, which I think are the latest versions.
> |
> | Regards,
> | Christoph
> |
> | PD: Dirk, Romain, I just read through the slides you made for this workshop a month ago. Great work! Thanks a lot!
>
> Thanks!
>
> |
> |
> | --
> | Christoph Bergmeir
> | e-mail: c.bergmeir at decsai.ugr.es
> | Grupo SCI2S, DiCITS Lab          (http://sci2s.ugr.es/DiCITS)
> | Dpto. de Ciencias de la Computacion e Inteligencia Artificial
> | E.T.S. Ingenierias de Informatica y Telecomunicacion
> | Universidad de Granada
> | 18071 - GRANADA (Spain)
> | _______________________________________________
> | Rcpp-devel mailing list
> | Rcpp-devel at lists.r-forge.r-project.org
> | https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
>


-- 
Christoph Bergmeir
e-mail: c.bergmeir at decsai.ugr.es
Grupo SCI2S, DiCITS Lab          (http://sci2s.ugr.es/DiCITS)
Dpto. de Ciencias de la Computacion e Inteligencia Artificial
E.T.S. Ingenierias de Informatica y Telecomunicacion
Universidad de Granada
18071 - GRANADA (Spain)


More information about the Rcpp-devel mailing list