jonkeane commented on code in PR #45951:
URL: https://github.com/apache/arrow/pull/45951#discussion_r2021535712


##########
r/src/altrep.cpp:
##########
@@ -1267,23 +1293,23 @@ sexp test_arrow_altrep_copy_by_dataptr(sexp x) {
 
   if (TYPEOF(x) == INTSXP) {
     cpp11::writable::integers out(Rf_xlength(x));
-    int* ptr = reinterpret_cast<int*>(DATAPTR(x));
+    int* ptr = reinterpret_cast<int*>(INTEGER(x));
     for (R_xlen_t i = 0; i < n; i++) {
       out[i] = ptr[i];
     }
     return out;
   } else if (TYPEOF(x) == REALSXP) {
     cpp11::writable::doubles out(Rf_xlength(x));
-    double* ptr = reinterpret_cast<double*>(DATAPTR(x));
+    double* ptr = reinterpret_cast<double*>(REAL(x));
     for (R_xlen_t i = 0; i < n; i++) {
       out[i] = ptr[i];
     }
     return out;
   } else if (TYPEOF(x) == STRSXP) {
     cpp11::writable::strings out(Rf_xlength(x));
-    SEXP* ptr = reinterpret_cast<SEXP*>(DATAPTR(x));
     for (R_xlen_t i = 0; i < n; i++) {
-      out[i] = ptr[i];
+      SEXP str_elt = reinterpret_cast<SEXP>(STRING_ELT(x, i));
+      out[i] = str_elt;

Review Comment:
   When I remove this code, I get test failures about element access methods 
for characters:
   
   ```
   ══ Failed 
══════════════════════════════════════════════════════════════════════
   ── 1. Failure (test-altrep.R:248:3): element access methods for character 
ALTREP
   test_arrow_altrep_copy_by_dataptr(altrep) (`actual`) not identical to 
`original` (`expected`).
   
   `actual` is NULL
   `expected` is a character vector (NA, '1', '2', '3', '4', ...)
   
   ── 2. Failure (test-altrep.R:255:3): element access methods for character 
ALTREP
   test_arrow_altrep_copy_by_dataptr(altrep) (`actual`) not identical to 
`original` (`expected`).
   
   `actual` is NULL
   `expected` is a character vector (NA, '1', '2', '3', '4', ...)
   
   ── 3. Failure (test-altrep.R:270:3): element access methods for character 
ALTREP
   test_arrow_altrep_copy_by_dataptr(altrep) (`actual`) not identical to 
`original` (`expected`).
   
   `actual` is NULL
   `expected` is a character vector (NA, '1', '2', '3', '4', ...)
   
   ── 4. Failure (test-altrep.R:277:3): element access methods for character 
ALTREP
   test_arrow_altrep_copy_by_dataptr(altrep) (`actual`) not identical to 
`original` (`expected`).
   
   `actual` is NULL
   `expected` is a character vector (NA, '1', '2', '3', '4', ...)
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscr...@arrow.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to