marcel 00649b1143 Fix unaligned memory accesses on Alpha and possible other platforms.
By using a pointer to struct dos_partition, we implicitly tell the
compiler that the pointer is 4-bytes aligned, even though we know
that's not the case. The fact that we only dereference the pointer
to access a byte-wide field (field dp_ptyp) is not a guarantee that
the compiler will in fact use a byte-wide load. On some platforms
it's more efficient to use long word or quad word loads and use
bit-shifting and bit-masking to get the intended byte. On those
platforms an misaligned load will be the result.
The fix is to use byte-wide pointer arithmetic based on sizeof() and
offsetof() to avoid invalid casts which avoids that the compiler
makes invalid assumptions.

Backtrace provided by: wilko@
MFC after: 1 week
2006-06-04 20:26:13 +00:00
..
2006-06-04 15:00:52 +00:00
2006-06-01 02:25:00 +00:00
2006-05-26 13:54:27 +00:00
2006-05-27 04:40:41 +00:00
2006-05-30 18:41:26 +00:00
2006-05-29 06:12:01 +00:00
2006-05-30 21:13:28 +00:00
2006-05-29 19:29:41 +00:00