[
https://issues.apache.org/jira/browse/ARROW-13312?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Niranda Perera reassigned ARROW-13312:
--------------------------------------
Assignee: Niranda Perera
> [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: Bug
> Components: C++
> Reporter: Niranda Perera
> Assignee: Niranda Perera
> Priority: Major
>
> In recently added `Bitmap::VisitWordAndWrite` method, translates the
> `visitor` lambda (that works on a `Word`) to a byte-visitor while handling
> the epilogue.
> 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 epilogue.
>
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)