Skip to content

Commit ab48d33

Browse files
committed
Use R_xlen_t consistently in data_frame.hpp
1 parent 54fc431 commit ab48d33

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

cpp11test/src/test-data_frame.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ context("data_frame-C++") {
5656
SEXP x = PROTECT(Rf_allocVector(VECSXP, 0));
5757

5858
bool is_altrep = false;
59-
int nrow = 10;
59+
R_xlen_t nrow = 10;
6060

6161
// Manually specify `nrow` using special constructor
6262
cpp11::writable::data_frame df(x, is_altrep, nrow);

inst/include/cpp11/data_frame.hpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,12 @@ class data_frame : public list {
3636
return R_NilValue;
3737
}
3838

39-
static int calc_nrow(SEXP x) {
39+
static R_xlen_t calc_nrow(SEXP x) {
4040
auto nms = get_attrib0(x, R_RowNamesSymbol);
4141
bool has_short_rownames =
4242
(Rf_isInteger(nms) && Rf_xlength(nms) == 2 && INTEGER(nms)[0] == NA_INTEGER);
4343
if (has_short_rownames) {
44-
return abs(INTEGER(nms)[1]);
44+
return static_cast<R_xlen_t>(abs(INTEGER(nms)[1]));
4545
}
4646

4747
if (!Rf_isNull(nms)) {
@@ -70,8 +70,8 @@ class data_frame : public cpp11::data_frame {
7070
return set_data_frame_attributes(std::move(x), calc_nrow(x));
7171
}
7272

73-
writable::list set_data_frame_attributes(writable::list&& x, int nrow) {
74-
x.attr(R_RowNamesSymbol) = {NA_INTEGER, -nrow};
73+
writable::list set_data_frame_attributes(writable::list&& x, R_xlen_t nrow) {
74+
x.attr(R_RowNamesSymbol) = {NA_INTEGER, -static_cast<int>(nrow)};
7575
x.attr(R_ClassSymbol) = "data.frame";
7676
return std::move(x);
7777
}
@@ -80,7 +80,7 @@ class data_frame : public cpp11::data_frame {
8080
data_frame(const SEXP data) : cpp11::data_frame(set_data_frame_attributes(data)) {}
8181
data_frame(const SEXP data, bool is_altrep)
8282
: cpp11::data_frame(set_data_frame_attributes(data), is_altrep) {}
83-
data_frame(const SEXP data, bool is_altrep, int nrow)
83+
data_frame(const SEXP data, bool is_altrep, R_xlen_t nrow)
8484
: cpp11::data_frame(set_data_frame_attributes(data, nrow), is_altrep) {}
8585
data_frame(std::initializer_list<list> il)
8686
: cpp11::data_frame(set_data_frame_attributes(writable::list(il))) {}

0 commit comments

Comments
 (0)