Fixes for 8vytes scalar types used in DNA (int64 and double)
authorSergey Sharybin <sergey.vfx@gmail.com>
Thu, 21 Jun 2012 10:52:23 +0000 (10:52 +0000)
committerSergey Sharybin <sergey.vfx@gmail.com>
Thu, 21 Jun 2012 10:52:23 +0000 (10:52 +0000)
commitff998e15a75a1f38db1e3fc91f7f0ef6664e4e45
tree5540573fa941b7be67b701ccb9956cc90a7eb801
parentc250ab893c0b0086011d44848b66e53adcff8cad
Fixes for 8vytes scalar types used in DNA (int64 and double)

- makesdna wasn't checking whether such scalars are aligned to 8 bytes.
  Now it should be handled correct.
- Some scalars in Object structure weren't 8 bytes aligned, which lead
  to some incorrectly loaded files.

  Fixed by adding void *pad. It's a bit tricky part of patch, but can't
  see clearer way to make alignment correct

  Usually ints/chars were used for padding, but in this case there are
  some leading pointer properties before int64 properties and using
  pointer as a padding resolves alignment on both 32 and 64 bit
  platforms.

  Using pointers as padding weren't needed before, because all types
  were correctly aligned independent of whether pointers are 4 or 8
  bytes.

This fixes #31774: Empty offset Y parameter is resetting
source/blender/makesdna/DNA_object_types.h
source/blender/makesdna/intern/makesdna.c