Skip to content

Commit f35cb95

Browse files
Avoid memcpy() of empty vector
1 parent 2b7eb4c commit f35cb95

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

src/fmelt.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -552,23 +552,23 @@ SEXP getvaluecols(SEXP DT, SEXP dtnames, Rboolean valfactor, Rboolean verbose, s
552552
//TODO complex value type: case CPLXSXP: { } break;
553553
case REALSXP : {
554554
double *dtarget = REAL(target);
555-
const double *dthiscol = REAL(thiscol);
555+
const double *dthiscol = REAL_RO(thiscol);
556556
if (data->narm) {
557557
for (int k=0; k<thislen; ++k)
558558
dtarget[counter + k] = dthiscol[ithisidx[k]-1];
559-
} else {
559+
} else if (data->nrow) {
560560
memcpy(dtarget + j*data->nrow, dthiscol, data->nrow*size);
561561
}
562562
}
563563
break;
564564
case INTSXP :
565565
case LGLSXP : {
566566
int *itarget = INTEGER(target);
567-
const int *ithiscol = INTEGER(thiscol);
567+
const int *ithiscol = INTEGER_RO(thiscol);
568568
if (data->narm) {
569569
for (int k=0; k<thislen; ++k)
570570
itarget[counter + k] = ithiscol[ithisidx[k]-1];
571-
} else {
571+
} else if (data->nrow) {
572572
memcpy(itarget + j*data->nrow, ithiscol, data->nrow*size);
573573
}
574574
} break;

0 commit comments

Comments
 (0)