diff --git a/src/data.table.h b/src/data.table.h index d6c67c752..e7ccc55d3 100644 --- a/src/data.table.h +++ b/src/data.table.h @@ -329,6 +329,7 @@ SEXP fitsInInt64R(SEXP x); bool allNA(SEXP x, bool errorForBadType); SEXP colnamesInt(SEXP x, SEXP cols, SEXP check_dups, SEXP skip_absent); bool INHERITS(SEXP x, SEXP char_); +void copyVectorElements(SEXP dst, SEXP src, R_xlen_t n, bool deep_copy, const char *caller); SEXP copyAsPlain(SEXP x); void copySharedColumns(SEXP x); SEXP lock(SEXP x); diff --git a/src/dogroups.c b/src/dogroups.c index 7fd1b956e..1085ceb5e 100644 --- a/src/dogroups.c +++ b/src/dogroups.c @@ -526,25 +526,7 @@ SEXP growVector(SEXP x, const R_len_t newlen) UNPROTECT(1); return newx; } - switch (TYPEOF(x)) { - case RAWSXP: memcpy(RAW(newx), RAW_RO(x), len*RTYPE_SIZEOF(x)); break; - case LGLSXP: memcpy(LOGICAL(newx), LOGICAL_RO(x), len*RTYPE_SIZEOF(x)); break; - case INTSXP: memcpy(INTEGER(newx), INTEGER_RO(x), len*RTYPE_SIZEOF(x)); break; - case REALSXP: memcpy(REAL(newx), REAL_RO(x), len*RTYPE_SIZEOF(x)); break; - case CPLXSXP: memcpy(COMPLEX(newx), COMPLEX_RO(x), len*RTYPE_SIZEOF(x)); break; - case STRSXP : { - const SEXP *xd = SEXPPTR_RO(x); - for (int i=0; i