Is it safe to index a little bit out of bounds

Andrew Martin andrew.thaddeus at gmail.com
Thu Mar 8 14:19:29 UTC 2018


Let's say I have a gc-managed byte array of length 19. GHC promises that
byte arrays are machine-word-aligned on the front end. That is, on a 64-bit
machine, this array starts on a memory address that divide 8 evenly.
However, the back end will certainly be unaligned. So, these two calls will
be fine:

- indexWordArray# myArr# 0#
- indexWordArray# myArr# 1#

But this one is non-deterministic:

- indexWordArray# myArr# 2#

Some of the bytes in the word will have garbage in them. However, this
could always be masked out with a bit mask (you have to know the platform
endianness for this to work right). Is this safe? I doubt think this could
ever cause a segfault but I wanted to check.

-- 
-Andrew Thaddeus Martin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20180308/ded8d0b0/attachment.html>


More information about the Libraries mailing list