On an x86-64 machine using GCC version 4.3.3 (Ubuntu 4.3.3-5ubuntu4), both the C code and C++ code fail for me. I get: x=505478909. Does x=-872412446?
Changing the unsigned long's to unsigned int's fixed the problem. And it does matter: before the change, the generator failed a variety of tests (really odd assortment, though: parking lot, 2dsphere, 3dsphere, squeeze, and sums).