Skip to content

Calling vector constructors with R_xlen_t or size_t values > 2³¹ fails in 64-bit R on Windows #804

@krlmlr

Description

@krlmlr
  • The value of (size_t)0x81000000 look correct when cast to double
  • I can't create a RawVector of that size, presumably because it's coerced to a 32-bit integer
  • Note the difference between sizeof.long and sizeof.pointer

Related: #459, #460, CC @kendonB.

.Machine$sizeof.long
#> [1] 4
.Machine$sizeof.pointer
#> [1] 8
f1 <- Rcpp::cppFunction("double f1() { R_xlen_t x = 0x81000000; return x; }")
f2 <- Rcpp::cppFunction("double f1() { size_t x = 0x81000000; return x; }")
f3 <- Rcpp::cppFunction("RawVector f3() { R_xlen_t x = 0x81000000; return RawVector(x); }")
f4 <- Rcpp::cppFunction("RawVector f4() { size_t x = 0x81000000; return RawVector(x); }")
f1()
#> [1] 2164260864
f2()
#> [1] 2164260864
f3()
#> Error in f3(): negative length vectors are not allowed
f4()
#> Error in f4(): negative length vectors are not allowed
Session info
devtools::session_info()
#> Session info -------------------------------------------------------------
#>  setting  value                       
#>  version  R version 3.4.3 (2017-11-30)
#>  system   x86_64, mingw32             
#>  ui       RTerm                       
#>  language (EN)                        
#>  collate  English_United States.1252  
#>  tz       Europe/Berlin               
#>  date     2018-01-18
#> Packages -----------------------------------------------------------------
#>  package   * version date       source        
#>  backports   1.1.2   2017-12-13 CRAN (R 3.4.3)
#>  base      * 3.4.3   2017-12-06 local         
#>  compiler    3.4.3   2017-12-06 local         
#>  datasets  * 3.4.3   2017-12-06 local         
#>  devtools    1.13.4  2017-11-09 CRAN (R 3.4.2)
#>  digest      0.6.13  2017-12-14 CRAN (R 3.4.3)
#>  evaluate    0.10.1  2017-06-24 CRAN (R 3.4.0)
#>  graphics  * 3.4.3   2017-12-06 local         
#>  grDevices * 3.4.3   2017-12-06 local         
#>  htmltools   0.3.6   2017-04-28 CRAN (R 3.4.0)
#>  knitr       1.17    2017-08-10 CRAN (R 3.4.1)
#>  magrittr    1.5     2014-11-22 CRAN (R 3.3.2)
#>  memoise     1.1.0   2017-04-21 CRAN (R 3.4.0)
#>  methods   * 3.4.3   2017-12-06 local         
#>  Rcpp        0.12.14 2017-11-23 CRAN (R 3.4.2)
#>  rmarkdown   1.8     2017-11-17 CRAN (R 3.4.2)
#>  rprojroot   1.2-11  2017-12-18 local         
#>  stats     * 3.4.3   2017-12-06 local         
#>  stringi     1.1.6   2017-11-17 CRAN (R 3.4.2)
#>  stringr     1.2.0   2017-02-18 CRAN (R 3.4.0)
#>  tools       3.4.3   2017-12-06 local         
#>  utils     * 3.4.3   2017-12-06 local         
#>  withr       2.1.0   2017-11-01 CRAN (R 3.4.2)
#>  yaml        2.1.16  2017-12-12 CRAN (R 3.4.3)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions