Niranda Perera created ARROW-13312: -------------------------------------- Summary: [C++] Bitmap::VisitWordAndWrite epilogue needs to work on Words (not bytes) Key: ARROW-13312 URL: https://issues.apache.org/jira/browse/ARROW-13312 Project: Apache Arrow Issue Type: Improvement Components: C++ Reporter: Niranda Perera
In recently added `Bitmap::VisitWordAndWrite` method, translates the `visitor` lambda (that works on a `Word`) to a byte-visitor while handling the prologue. This could lead to incorrect results in the client code. ex: {code:java} // code placeholder // N readers, M writers int64_t bits_written = 0; auto visitor = [&](std::array<Word, N> in, std::array<Word, M>* out){ ... bits_written += (sizeof(Word) * 8); }{code} At the end of the Visit, bits_written would have an incorrect sum because in the prologue, it adds 64 to bits_written for each trailing byte, whereas it should've been 8. Possible solution: Needs to add ReadTrailingWord and WriteTrailingWord functionality to BitmapWordReader and BitmapWordWriter respectively and call visitor with the words in the prologue. -- This message was sent by Atlassian Jira (v8.3.4#803005)