>Isn't also TYPE_SUBTYPE wrong in the big endian case? It seems to me >that on a 64bit big endian machine both subtype and type would always >end up being 0. > >like so? > >#define TYPE_SUBTYPE(X,Y) (((Y)|((X)<<16)) << (sizeof(ptrdiff_t) - 32))
Yes, it is currently not correct for 64-bit bit endian. And I cannot see how a lot of code in pike would work at all if the union trick does not do so, we use union assignments in several places. On a related note, can anyone come up with anything to put in the wasted 40 bits of struct svalue? :) -- Per Hedbor
