sizeof(long) on x86_64 is 8 bytes, things break
libogg is using long for nearly all bitwise operations and sometimes with 32bit types without a cast. this brakes some functions which imply that bits outside of 32 bit are cleared. for example on x86_64 (amd64), from cvs_nightly, bitwise.c, function oggpackB_read : unsigned long ret; .. ret= b->ptr<<(24+b->endbit); if endbit is zero and the highest bit of ptr is set, the value of ptr is shifted, converted to signed int, and sign extended to 64 bits before stored in the unsigned variable ret. this brakes programs using these libogg functions.