<div dir="ltr">Dear Dirk,<div><br></div><div>Many thanks. So I'm concluding that wrap is not meant to do casting in this sense but rather converts non-SEXP to SEXP, and so crashing is not unexpected.</div><div><br></div><div>Best,</div><div><br></div><div>Rajen</div></div><div class="gmail_extra"><br><div class="gmail_quote">On 11 August 2016 at 07:43, Dirk Eddelbuettel <span dir="ltr"><<a href="mailto:edd@debian.org" target="_blank">edd@debian.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
On 11 August 2016 at 06:28, Rajen Shah wrote:<br>
| Hello,<br>
|<br>
| I am having trouble debugging a package that appears to work fine on Mac<br>
| operating systems but crashes on Unix and Windows.<br>
|<br>
| I have found the following example that crashes on my Windows setup (session<br>
| info copied below)<br>
|<br>
| IntegerVector runif_int2() {<br>
|   return wrap(floor(runif(1000000)));<br>
| }<br>
|<br>
| When this is called about 5-10 times in succession R crashes (e.g. with<br>
| set.seed(1), but this doesn't seem to matter).<br>
|<br>
| Any ideas about why this crashes would be much appreciated. To be clear, I am<br>
| not looking for an alternative to the above code (which simply produces a<br>
| vector of zeroes), but would like to know what aspects of this cause a crash so<br>
| I know what code structures may be causing problems in the package I am<br>
| creating. The code does not appear to crash on Mac and I have yet to try it on<br>
| Unix.<br>
<br>
</span>i)  On my box it doesn't run (which is probably a bug)<br>
<br>
R> library(Rcpp)<br>
R> cppFunction("IntegerVector runif_int2() { return wrap(floor(runif(1000000))); }")<br>
R> set.seed(1)<br>
R> replicate(100, runif_int2())   ## should probably use loop here...<br>
Error in runif_int2() : unimplemented type 'integer' in 'coerceToInteger'<br>
R><br>
<br>
ii) Your code is still "wrong" or less than ideal. You really are working<br>
with doubles there, even after the floor() around runif.  So maybe return a<br>
double vector?  Else assign explictly via a cast.<br>
<br>
Dirk<br>
<span class=""><br>
<br>
<br>
<br>
|<br>
| Many thanks in advance,<br>
|<br>
| Rajen<br>
|<br>
| Session info:<br>
|<br>
| R version 3.3.1 (2016-06-21)<br>
| Platform: x86_64-w64-mingw32/x64 (64-bit)<br>
| Running under: Windows >= 8 x64 (build 9200)<br>
|<br>
| locale:<br>
| [1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252<br>
|    LC_MONETARY=English_United States.1252<br>
| [4] LC_NUMERIC=C                           LC_TIME=English_United States.1252  <br>
|  <br>
|<br>
| attached base packages:<br>
| [1] stats     graphics  grDevices utils     datasets  methods   base     <br>
|<br>
| loaded via a namespace (and not attached):<br>
| [1] tools_3.3.1<br>
</span>| ______________________________<wbr>_________________<br>
| Rcpp-devel mailing list<br>
| <a href="mailto:Rcpp-devel@lists.r-forge.r-project.org">Rcpp-devel@lists.r-forge.r-<wbr>project.org</a><br>
| <a href="https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel" rel="noreferrer" target="_blank">https://lists.r-forge.r-<wbr>project.org/cgi-bin/mailman/<wbr>listinfo/rcpp-devel</a><br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
<a href="http://dirk.eddelbuettel.com" rel="noreferrer" target="_blank">http://dirk.eddelbuettel.com</a> | @eddelbuettel | <a href="mailto:edd@debian.org">edd@debian.org</a><br>
</font></span></blockquote></div><br></div>