# odd byte length primitive types and reinterpret()

**URL:** https://discourse.julialang.org/t/odd-byte-length-primitive-types-and-reinterpret/9025
**Category:** General Usage
**Created:** [February 12, 2018, 11:42pm UTC](https://discourse.julialang.org/t/odd-byte-length-primitive-types-and-reinterpret/9025 "2018-02-12T23:42:06Z")
**Posts on this page:** 1
**Showing post:** 3

<div class="post-metadata">

### Author: ![foobar\_lv2](https://avatars.discourse-cdn.com/v4/letter/f/ee59a6/32.png) [@foobar\_lv2](https://discourse.julialang.org/u/foobar_lv2)
#### Post date: [February 13, 2018, 12:25am UTC](https://discourse.julialang.org/t/odd-byte-length-primitive-types-and-reinterpret/9025/3 "2018-02-13T00:25:59Z")

</div>

I think this is a bug; something somehow gets confused in the computations of the offsets/alignments and you end up reading/writing out-of-bounds memory. Could you open an issue or should someone else on this thread do so?

```julia
versioninfo()
#Julia Version 0.6.2

primitive type Int24 24 end
A=UInt8[i for i =1:12];

Ab=reinterpret(Int24, A)
#4-element Array{Int24,1}:
# Int24(0x030201)
# Int24(0x070605)
# Int24(0x0b0a09)
# Int24(0x000000) This is oob memory, potentially belonging to a different object.

unsafe_load(pointer(Ab,2))
#Int24(0x060504) correct

unsafe_load(pointer(Ab)+3)
#Int24(0x060504) correct
unsafe_load(pointer(Ab),2)
#Int24(0x070605) WRONG
Ab[2]
#Int24(0x070605) WRONG

```

Fixed on current master 0.7 (but a testcase would still be good, especially since @Keno plans to do something to reinterpret).

Edit: To be more precise, this issue has nothing to do with reinterpret and also happens on 0.7:

```julia
primitive type Int24 24 end
Int24(x::Int) = Core.Intrinsics.trunc_int(Int24, x)
Base.zero(::Type{Int24})=Int24(0)

A=zeros(Int24, 1000)
1000-element Array{Int24,1}:
#0.6:
# corrupted double-linked list 
#signal (6): Aborted

#0.7:
#corrupted double-linked list
#signal (6): Aborted

```

---

_[View the full topic](https://discourse.julialang.org/t/odd-byte-length-primitive-types-and-reinterpret/9025)._
