• Tom Lane's avatar
    Change the declaration of struct varlena so that the length word is · 9713c063
    Tom Lane authored
    represented as "char ...[4]" not "int32".  Since the length word is never
    supposed to be accessed via this struct member anyway, this won't break
    any existing code that is following the rules.  The advantage is that C
    compilers will no longer assume that a pointer to struct varlena is
    word-aligned, which prevents incorrect optimizations in TOAST-pointer
    access and perhaps other places.  gcc doesn't seem to do this (at least
    not at -O2), but the problem is demonstrable on some other compilers.
    
    I changed struct inet as well, but didn't bother to touch a lot of other
    struct definitions in which it wouldn't make any difference because there
    were other fields forcing int alignment anyway.  Hopefully none of those
    struct definitions are used for accessing unaligned Datums.
    9713c063
c.h 23.3 KB