As it seems, ZoneOptionValueEnum is optimised by ARM-GCC to have only 8bits, rather than the 32bits used by the host compiler. Meaning that with "data" pointing at ZoneOptionValueTyped::value, we need the offset and not the size of the element before to properly rewind the data pointer.