> - res->end |= (unsigned long)szhi<<32; > + res->end |= ((unsigned > long)szhi<<32|0xffffffffUL); Should read res->end |= ((uint64_t)szhi << 32) | 0xffffffff; ("long" is 32-bits on many platforms). Segher