@@ -1046,7 +1046,7 @@ const char *memrecycle(const SEXP target, const SEXP where, const int start, con
10461046 switch (TYPEOF (source )) {
10471047 case RAWSXP :
10481048 if (mc ) {
1049- memcpy (td , RAW (source ), slen * sizeof (Rbyte )); break ;
1049+ memcpy (td , RAW_RO (source ), slen * sizeof (Rbyte )); break ;
10501050 } else BODY (Rbyte , RAW , Rbyte , val , td [i ]= cval )
10511051 case LGLSXP : BODY (int , LOGICAL , Rbyte , val == 1 , td [i ]= cval )
10521052 case INTSXP : BODY (int , INTEGER , Rbyte , (val > 255 || val < 0 ) ? 0 : val , td [i ]= cval )
@@ -1063,7 +1063,7 @@ const char *memrecycle(const SEXP target, const SEXP where, const int start, con
10631063 case RAWSXP : BODY (Rbyte , RAW , int , val != 0 , td [i ]= cval )
10641064 case LGLSXP :
10651065 if (mc ) {
1066- memcpy (td , LOGICAL (source ), slen * sizeof (int )); break ;
1066+ memcpy (td , LOGICAL_RO (source ), slen * sizeof (int )); break ;
10671067 } else BODY (int , LOGICAL , int , val , td [i ]= cval )
10681068 case INTSXP : BODY (int , INTEGER , int , val == NA_INTEGER ? NA_LOGICAL : val != 0 , td [i ]= cval )
10691069 case REALSXP :
@@ -1080,7 +1080,7 @@ const char *memrecycle(const SEXP target, const SEXP where, const int start, con
10801080 case LGLSXP : // same as INTSXP ...
10811081 case INTSXP :
10821082 if (mc ) {
1083- memcpy (td , INTEGER (source ), slen * sizeof (int )); break ;
1083+ memcpy (td , INTEGER_RO (source ), slen * sizeof (int )); break ;
10841084 } else BODY (int , INTEGER , int , val , td [i ]= cval )
10851085 case REALSXP :
10861086 if (sourceIsI64 )
@@ -1100,7 +1100,7 @@ const char *memrecycle(const SEXP target, const SEXP where, const int start, con
11001100 case REALSXP :
11011101 if (sourceIsI64 ) {
11021102 if (mc ) {
1103- memcpy (td , (int64_t * )REAL (source ), slen * sizeof (int64_t )); break ;
1103+ memcpy (td , (const int64_t * )REAL_RO (source ), slen * sizeof (int64_t )); break ;
11041104 } else BODY (int64_t , REAL , int64_t , val , td [i ]= cval )
11051105 } else BODY (double , REAL , int64_t , within_int64_repres (val ) ? val : NA_INTEGER64 , td [i ]= cval )
11061106 case CPLXSXP : BODY (Rcomplex , COMPLEX , int64_t , ISNAN (val .r ) ? NA_INTEGER64 : (int64_t )val .r , td [i ]= cval )
@@ -1115,7 +1115,7 @@ const char *memrecycle(const SEXP target, const SEXP where, const int start, con
11151115 case REALSXP :
11161116 if (!sourceIsI64 ) {
11171117 if (mc ) {
1118- memcpy (td , (double * )REAL (source ), slen * sizeof (double )); break ;
1118+ memcpy (td , (const double * )REAL_RO (source ), slen * sizeof (double )); break ;
11191119 } else BODY (double , REAL , double , val , td [i ]= cval )
11201120 } else BODY (int64_t , REAL , double , val == NA_INTEGER64 ? NA_REAL : val , td [i ]= cval )
11211121 case CPLXSXP : BODY (Rcomplex , COMPLEX , double , val .r , td [i ]= cval )
@@ -1136,7 +1136,7 @@ const char *memrecycle(const SEXP target, const SEXP where, const int start, con
11361136 else BODY (double , REAL , double , ISNAN (val )?(im = NA_REAL ,NA_REAL ):(im = 0.0 ,val ), td [i ].r = cval ;td [i ].i = im )
11371137 case CPLXSXP :
11381138 if (mc ) {
1139- memcpy (td , COMPLEX (source ), slen * sizeof (Rcomplex )); break ;
1139+ memcpy (td , COMPLEX_RO (source ), slen * sizeof (Rcomplex )); break ;
11401140 } else BODY (Rcomplex , COMPLEX , Rcomplex , val , td [i ]= cval )
11411141 default : COERCE_ERROR ("complex" );
11421142 }
0 commit comments