STL std::random_shuffle behavior fails with lrand48 (workaround)

Jim Kleckner jek-cygwin@kleckner.net
Mon Aug 2 22:01:00 GMT 2004


Arturus Magi wrote:
> Jim Kleckner wrote:
> 
>> Version of cygwin is current (see attached file
>> for all version stamps)
>> gcc                     3.3.1-3
>> gcc-g++                 3.3.1-3
>>
>> version of gcc/g++ on Linux is 2.96.
>>
>> The test program is attached as is cygcheck output.
>>
>> To run it just type (note that -mno-cygwin is *not* used):
>> g++ xxx.cpp
>> ./a.exe
>>
>> Is this a configuration issue?  Or does lrand48 not work?
>> Or is it a long vs. int type mismatch?
>>
> 
> Try upgrading the version of gcc on the Linux box before comparing. 
> There are a number of differences between gcc2 and gcc3 that may be 
> affecting things.

It is not possible to upgrade that server in order
to confirm that the bug is general to gcc3.

If someone else could demonstrate that
the bug exists on other platforms, I would
be grateful.

For other people who run into this, I found that
substituting rand() for lrand48() works around
this problem.  Add this code ahead of the includes
of <algorithm> and so forth.
Not pretty but it removed the roadblock.

Jim


// This lrand48() hack is a workaround for cygwin lrand48()
extern "C" long int lrand48();
extern "C" int rand();
long int lrand48()
{
     return rand();
}

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list